|
Namazu for hns による簡易全文検索 詳しくは 詳細指定/ヘルプを参照して下さい |
||||||||||||||||||||||||||||||||||||||||||||||||
2004年12月25日(土) 旧暦 [n年日記] [更新:"2004/12/25 22:37:39"]#1 [toolchain] mingw-cross-howto.txt
6/02 の日記
を見て、そこから接続している
mingw-cross-howto.txt
を見て、作って見る。
MSVCRT と CRTDLL の違いが良く分っていないが msvcrt で行って見る。
材料
@ library and includes:mkdir /usr/local/cross-tools cd /usr/local/cross-tools unzip $HOGE/bin-msvcrt-2000-03-27.zip @ binutils:cd src tar zxf binutils-2.15.tar.bz2 cd binutils-2.15 mkdir obj cd obj ../configure --prefix=/usr/local/cross-tools --target=i386-mingw32msvc -v make sudo make install @ gcc:cd src tar zxf gcc-3.3.4.tar.gz2 cd gcc-3.3.4 mkdir obj cd obj ../configure --prefix=/usr/local/cross-tools --target=i386-mingw32msvc -v \ --enable-languages=c,c++ make/usr/local/cross-tools/i386-mingw32msvc/bin/ld: cannot find -lmingwex ? mingw-runtime-2.0-2 大昔に似たようなことをしている人がいる ? 今だと mingw-runtime-3.5 ? ( つっこみ )
#2 [toolchain] 初めからやり直し
#1 にあることをもう一度 stuff for install: mingw-runtime-3.5.tar.gz w32api-3.1.tar.gz binutils-2.15.tar.bz2 gcc-3.4.2.tar.bz2 @ w32api, mingw-runtime:cd /usr/local/cross-tools/ sudo mkdir i386-mingw32 cd i386-mingw32 sudo tar zxf /e/u/j/distfiles/mingw-runtime-3.5.tar.gz sudo tar zxf /e/u/j/distfiles/w32api-3.1.tar.gz @ binutils-2.15:tar zxf /e/u/j/distfiles/binutils-2.15.tar.bz2 mkdir binutils-2.15/obj cd /export/local-src/binutils-2.15/obj/ make sudo make install @ gcc-3.4.2:set path = ( $path /usr/local/cross-tools/i386-mingw32/bin ) set path = ( $path /usr/local/cross-tools/bin ) tar zxf /e/u/j/distfiles/gcc-3.4.2.tar.bz2 mkdir gcc-3.4.2/obj cd gcc-3.4.2/obj ../configure --prefix=/usr/local/cross-tools --target=i386-mingw32 -v --enable-language=c,c++ time gmake sudo gmake install /usr/local/cross-tools/i386-mingw32/bin/gcc --version @ make install (gcc):@ cross compile:
Use this gcc to create cross-assembler on Win/2k, which is for embedded processor.
../bfd/.libs/libbfd.a: could not read symbols: Archive has no index; run ranlib to add onei386-mingw32-ranlib bfd/.libs/libbfd.a will fix this problem. I don't know why we need this manual intervention. file hoge hoge: MS Windows PE 32-bit Intel 80386 console executable not relocatable @ test run on machine without cygwin:
In DOS CMD prompt window, I've got:
"This program cannot be run in DOS mode."
@ test run on machine with cygwin:
Runs OK, in DOS cmd prompt window.
( つっこみ )
#3 [toolchain] cygwin のない Win/2k 用の実行形式を作る
#2 に書いたように i386-mingw32 のクロス環境を用意した。
確かに gcc でコンパイル出来る。
これでコンパイルしたものを DOS 窓で動かして見る。対象機械は二つ。一つは cygwin 無。一つは cygwin 有。 cygwin 有 DOS 窓 ○ cygwin 窓 ○ cygwin 無 DOS 窓 × (1) cygwin 無 GUI × 一瞬 DOS 窓が開くが、すぐ閉じてしまう。(1) 表示は "This program cannot be run in DOS mode." しかし i386-mingw32-objdump -d hoge |grep cygwin して見ると、 cygwin への参照はない。 ちなみに、cygwin でコンパイルしたものは cygwin への参照がある。 これは cygwin は関係なくて、mingw が入っている機械と、入っていない機械の違い のような気がする。 ldd とかないのかな。 mingw-runtime-3.5.tar.gz に入っている、次のものを入れればいいのかな。 408964 Sep 5 23:23 bin/mingwm10.dllだったら cygwin でも同じ ? PATH 変数に入っていると思われる C:\WINNT\ に置いて見たが、状況は変らず。 (要再動 ?) 再起動しても同じだった。 vector より Hexdump -C して見ると、最初の方にそういう文字がある。 Windows 環境の時には実行されないが、DOS 環境の時には実行されて、その文字 が表示されるらしい。 ○と×の機械で、 set と入力して表示される環境変数を見ると、かなり違いがある。 明日確めて見よう(きょうは寝る)。 関数で言うと、次のどれかかなぁ。っていうよりは、開始番地が違うのかな。 00401000 t __gnu_exception_handler@4 00401100 t ___mingw_CRTStartup 00401220 T _mainCRTStartup 00401240 T _WinMainCRTStartup00401240 T _WinMainCRTStartup から始めてくれればいい訳だ。 ( つっこみ )
|
最近の日記 2025年02月13日 ・dvipdfmx ICC profile format spec. version 4.3.0 2025年01月29日 ・ham/wsjtx 2025年01月27日 ・wip/wsjtx 5.4.2 2025年01月25日 ・ham/wsjtx 2025年01月15日 ・今更 advent calendar | ||