[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 メーリングリストの案内