[Mew-Win32 03227] mewls and mewencode and etc can compile Mingw
小関 吉則 (KOSEKI Yoshinori)
kose at example.com
2001年 5月 25日 (金) 13:25:19 JST
>>>>> In [Mew-Win32 : No.03215]
>>>>> “坂本” = Mitsugu SAKAMOTO <mitsugu at example.com> wrote:
坂本> ええと、現在のCVSのmewlsなどなどをbc++5.5(free版)でコ
坂本> ンパイルしようとしています。
このメールに触発されて Mingw でコンパイルできないのかなーと
ふと思いたちました。
;; もう誰かやりましたか?
( ここでは Cygwin に含まれる Mingw を使っています。
つまり gcc -mno-cygwin でコンパイルしています。)
1. Mingw で zlib コンパイルします。
Cygwin/setup.exe で ソースの覧をチェックしてソースもダウン
ロードします。最新は zlib-1.1.3-5-src.tar.gz
make nt/Makefile.gcc CC='gcc -mno-cygwin'
cp zlib.h zconf.h /usr/local/include/
cp libz.a /usr/local/lib
2. cd mew-1.95b122/bin
CC='gcc -mno-cygwin' ./configure
Makefile を修正
CFLAGS = -g -O2 -I/usr/local/include
LIBS = -lz -L/usr/local/lib
(修正しなくとも良いように configure を変えるべきなんだろう)
すると、
kose(^.^)SLEEPY> ls *.exe
mewcat.exe*
mewdecode.exe*
mewencode.exe*
kose(^.^)SLEEPY> cygcheck mewcat
Found: .\mewcat.exe
.\mewcat.exe
C:\WINNT\System32\msvcrt.dll
C:\WINNT\System32\KERNEL32.dll
C:\WINNT\System32\NTDLL.DLL
Use -h to see help about each section
のように cygwin1.dll を使わない(statの速い)バイナリができあ
がります。
しかし、
mewls だけは、poll() を使っているため、
gcc -mno-cygwin -o mewls.exe -g -O2 -I/usr/local/include mewls.o utils.o pattern.o
mewls.o: In function `main':
/tmp/mew-1.95b122/bin/mewls.c:1009: undefined reference to `usleep'
collect2: ld returned 1 exit status
make: *** [mewls.exe] Error 1
となってしまいます。
Mingw に libm.a がないためです。
gcc -mno-cygwin -o mewls.exe -g -O2 -I/usr/local/include
mewls.o utils.o pattern.o -lm
のようにするとできあがるのですが、そうすると /usr/lib/libm.a
をリンクして cygwin1.dll も使ってしまうため、
kose(^.^)SLEEPY> cygcheck mewls.exe
Found: .\mewls.exe
.\mewls.exe
C:\cygwin\bin\cygwin1.dll
C:\WINNT\System32\KERNEL32.dll
C:\WINNT\System32\NTDLL.DLL
C:\WINNT\System32\msvcrt.dll
Use -h to see help about each section
となってしまいます。
usleep() の代替え関数ってもっと別のものがないでしょうか?
そうすれば Mingw で cygwin1.dll を使わないバイナリが作れるよ
うになります。
--
こせき
http://www.egroups.co.jp/group/emacs21-users-ja/
を作ってみたよん。^^)v ♪〜
Mew-win32 メーリングリストの案内