gcc ではなく、g++ でないといけなかったんです。
$ g++ b.cpp
$ od a.exe
DLL Name: KERNEL32.dll
DLL Name: msvcrt.dll
DLL Name: libgcc_s_dw2-1.dll
DLL Name: libstdc++-6.dll
od は、bash で function od() { objdump -p $1 | grep "DLL Name"; }
いくつか mingw 由来と思われる DLL への参照が有ります。
$ g++ b.cpp -static
ビルドは通りました。
$ od a.exe
DLL Name: KERNEL32.dll
DLL Name: msvcrt.dll
おお。結果は満足するものになりました。
2015年9月28日月曜日
mingw-gcc (C言語) でスタティックリンクをしたい
例えば、libpng をスタティックリンクしたいんで。
$ gcc a.c
C:\msys32\tmp\ccUYzSGl.o:a.c:(.text+0x2a): undefined reference to `png_init_io'
collect2.exe: error: ld returned 1 exit status
-lpng が必要。
$ gcc a.c -lpng
ビルドは通りました。
$ od a.exe
DLL Name: KERNEL32.dll
DLL Name: msvcrt.dll
DLL Name: libpng16-16.dll
od は、bash で function od() { objdump -p $1 | grep "DLL Name"; }
libpng16-16.dll への参照が発生しました。これではダイナミックリンクになり、多数のファイルの配布が必要になってしまいます。
$ gcc -lpng a.c
C:\msys32\tmp\ccoKX062.o:a.c:(.text+0x2a): undefined reference to `png_init_io'
collect2.exe: error: ld returned 1 exit status
a.c の前につけたらダメですか。
$ gcc a.c -lpng -static
C:/msys32/mingw32/bin/../lib/gcc/i686-w64-mingw32/5.2.0/../../../../lib\libpng.a(png.o):(.text+0x139b): undefined reference to `crc32'
C:/msys32/mingw32/bin/../lib/gcc/i686-w64-mingw32/5.2.0/../../../../lib\libpng.a(png.o):(.text+0x13ee): undefined reference to `crc32'
C:/msys32/mingw32/bin/../lib/gcc/i686-w64-mingw32/5.2.0/../../../../lib\libpng.a(png.o):(.text+0x2725): undefined reference to `adler32'
C:/msys32/mingw32/bin/../lib/gcc/i686-w64-mingw32/5.2.0/../../../../lib\libpng.a(png.o):(.text+0x2739): undefined reference to `adler32'
C:/msys32/mingw32/bin/../lib/gcc/i686-w64-mingw32/5.2.0/../../../../lib\libpng.a(png.o):(.text+0x2766): undefined reference to `crc32'
C:/msys32/mingw32/bin/../lib/gcc/i686-w64-mingw32/5.2.0/../../../../lib\libpng.a(png.o):(.text+0x277a): undefined reference to `crc32'
C:/msys32/mingw32/bin/../lib/gcc/i686-w64-mingw32/5.2.0/../../../../lib\libpng.a(png.o):(.text+0x1c62): undefined reference to `inflateReset'
C:/msys32/mingw32/bin/../lib/gcc/i686-w64-mingw32/5.2.0/../../../../lib\libpng.a(pngread.o):(.text+0x4b78): undefined reference to `inflateEnd'
C:/msys32/mingw32/bin/../lib/gcc/i686-w64-mingw32/5.2.0/../../../../lib\libpng.a(pngrutil.o):(.text+0x2fd): undefined reference to `inflateReset2'
C:/msys32/mingw32/bin/../lib/gcc/i686-w64-mingw32/5.2.0/../../../../lib\libpng.a(pngrutil.o):(.text+0x332): undefined reference to `inflateInit2_'
C:/msys32/mingw32/bin/../lib/gcc/i686-w64-mingw32/5.2.0/../../../../lib\libpng.a(pngrutil.o):(.text+0x4e8): undefined reference to `inflate'
C:/msys32/mingw32/bin/../lib/gcc/i686-w64-mingw32/5.2.0/../../../../lib\libpng.a(pngrutil.o):(.text+0x68a): undefined reference to `inflateReset'
C:/msys32/mingw32/bin/../lib/gcc/i686-w64-mingw32/5.2.0/../../../../lib\libpng.a(pngrutil.o):(.text+0xab7): undefined reference to `inflate'
C:/msys32/mingw32/bin/../lib/gcc/i686-w64-mingw32/5.2.0/../../../../lib\libpng.a(pngrutil.o):(.text+0x49f8): undefined reference to `inflate'
C:/msys32/mingw32/bin/../lib/gcc/i686-w64-mingw32/5.2.0/../../../../lib\libpng.a(pngrutil.o):(.text+0x4ab6): undefined reference to `inflate'
C:/msys32/mingw32/bin/../lib/gcc/i686-w64-mingw32/5.2.0/../../../../lib\libpng.a(pngrutil.o):(.text+0x5486): undefined reference to `inflateReset'
C:/msys32/mingw32/bin/../lib/gcc/i686-w64-mingw32/5.2.0/../../../../lib\libpng.a(pngwrite.o):(.text+0x1aba): undefined reference to `deflateEnd'
C:/msys32/mingw32/bin/../lib/gcc/i686-w64-mingw32/5.2.0/../../../../lib\libpng.a(pngwutil.o):(.text+0x61a): undefined reference to `deflateInit2_'
C:/msys32/mingw32/bin/../lib/gcc/i686-w64-mingw32/5.2.0/../../../../lib\libpng.a(pngwutil.o):(.text+0x662): undefined reference to `deflateEnd'
C:/msys32/mingw32/bin/../lib/gcc/i686-w64-mingw32/5.2.0/../../../../lib\libpng.a(pngwutil.o):(.text+0x6f2): undefined reference to `deflateReset'
C:/msys32/mingw32/bin/../lib/gcc/i686-w64-mingw32/5.2.0/../../../../lib\libpng.a(pngwutil.o):(.text+0xba5): undefined reference to `deflate'
C:/msys32/mingw32/bin/../lib/gcc/i686-w64-mingw32/5.2.0/../../../../lib\libpng.a(pngwutil.o):(.text+0x2d7b): undefined reference to `deflate'
collect2.exe: error: ld returned 1 exit status
zlib が必要だそうです。
$ gcc a.c -lpng -lz -static
ビルドは通りました。
$ od a.exe
DLL Name: KERNEL32.dll
DLL Name: msvcrt.dll
スタティックリンクになりました。
$ gcc a.c -lpng -static -lz
$ gcc a.c -static -lpng -lz
$ gcc -static a.c -lpng -lz
-static の順序に関係なく、スタティックリンクになりました。
しかしこれで満足していません。追加で調査が必要です。。。
$ gcc a.c
C:\msys32\tmp\ccUYzSGl.o:a.c:(.text+0x2a): undefined reference to `png_init_io'
collect2.exe: error: ld returned 1 exit status
-lpng が必要。
$ gcc a.c -lpng
ビルドは通りました。
$ od a.exe
DLL Name: KERNEL32.dll
DLL Name: msvcrt.dll
DLL Name: libpng16-16.dll
od は、bash で function od() { objdump -p $1 | grep "DLL Name"; }
libpng16-16.dll への参照が発生しました。これではダイナミックリンクになり、多数のファイルの配布が必要になってしまいます。
$ gcc -lpng a.c
C:\msys32\tmp\ccoKX062.o:a.c:(.text+0x2a): undefined reference to `png_init_io'
collect2.exe: error: ld returned 1 exit status
a.c の前につけたらダメですか。
$ gcc a.c -lpng -static
C:/msys32/mingw32/bin/../lib/gcc/i686-w64-mingw32/5.2.0/../../../../lib\libpng.a(png.o):(.text+0x139b): undefined reference to `crc32'
C:/msys32/mingw32/bin/../lib/gcc/i686-w64-mingw32/5.2.0/../../../../lib\libpng.a(png.o):(.text+0x13ee): undefined reference to `crc32'
C:/msys32/mingw32/bin/../lib/gcc/i686-w64-mingw32/5.2.0/../../../../lib\libpng.a(png.o):(.text+0x2725): undefined reference to `adler32'
C:/msys32/mingw32/bin/../lib/gcc/i686-w64-mingw32/5.2.0/../../../../lib\libpng.a(png.o):(.text+0x2739): undefined reference to `adler32'
C:/msys32/mingw32/bin/../lib/gcc/i686-w64-mingw32/5.2.0/../../../../lib\libpng.a(png.o):(.text+0x2766): undefined reference to `crc32'
C:/msys32/mingw32/bin/../lib/gcc/i686-w64-mingw32/5.2.0/../../../../lib\libpng.a(png.o):(.text+0x277a): undefined reference to `crc32'
C:/msys32/mingw32/bin/../lib/gcc/i686-w64-mingw32/5.2.0/../../../../lib\libpng.a(png.o):(.text+0x1c62): undefined reference to `inflateReset'
C:/msys32/mingw32/bin/../lib/gcc/i686-w64-mingw32/5.2.0/../../../../lib\libpng.a(pngread.o):(.text+0x4b78): undefined reference to `inflateEnd'
C:/msys32/mingw32/bin/../lib/gcc/i686-w64-mingw32/5.2.0/../../../../lib\libpng.a(pngrutil.o):(.text+0x2fd): undefined reference to `inflateReset2'
C:/msys32/mingw32/bin/../lib/gcc/i686-w64-mingw32/5.2.0/../../../../lib\libpng.a(pngrutil.o):(.text+0x332): undefined reference to `inflateInit2_'
C:/msys32/mingw32/bin/../lib/gcc/i686-w64-mingw32/5.2.0/../../../../lib\libpng.a(pngrutil.o):(.text+0x4e8): undefined reference to `inflate'
C:/msys32/mingw32/bin/../lib/gcc/i686-w64-mingw32/5.2.0/../../../../lib\libpng.a(pngrutil.o):(.text+0x68a): undefined reference to `inflateReset'
C:/msys32/mingw32/bin/../lib/gcc/i686-w64-mingw32/5.2.0/../../../../lib\libpng.a(pngrutil.o):(.text+0xab7): undefined reference to `inflate'
C:/msys32/mingw32/bin/../lib/gcc/i686-w64-mingw32/5.2.0/../../../../lib\libpng.a(pngrutil.o):(.text+0x49f8): undefined reference to `inflate'
C:/msys32/mingw32/bin/../lib/gcc/i686-w64-mingw32/5.2.0/../../../../lib\libpng.a(pngrutil.o):(.text+0x4ab6): undefined reference to `inflate'
C:/msys32/mingw32/bin/../lib/gcc/i686-w64-mingw32/5.2.0/../../../../lib\libpng.a(pngrutil.o):(.text+0x5486): undefined reference to `inflateReset'
C:/msys32/mingw32/bin/../lib/gcc/i686-w64-mingw32/5.2.0/../../../../lib\libpng.a(pngwrite.o):(.text+0x1aba): undefined reference to `deflateEnd'
C:/msys32/mingw32/bin/../lib/gcc/i686-w64-mingw32/5.2.0/../../../../lib\libpng.a(pngwutil.o):(.text+0x61a): undefined reference to `deflateInit2_'
C:/msys32/mingw32/bin/../lib/gcc/i686-w64-mingw32/5.2.0/../../../../lib\libpng.a(pngwutil.o):(.text+0x662): undefined reference to `deflateEnd'
C:/msys32/mingw32/bin/../lib/gcc/i686-w64-mingw32/5.2.0/../../../../lib\libpng.a(pngwutil.o):(.text+0x6f2): undefined reference to `deflateReset'
C:/msys32/mingw32/bin/../lib/gcc/i686-w64-mingw32/5.2.0/../../../../lib\libpng.a(pngwutil.o):(.text+0xba5): undefined reference to `deflate'
C:/msys32/mingw32/bin/../lib/gcc/i686-w64-mingw32/5.2.0/../../../../lib\libpng.a(pngwutil.o):(.text+0x2d7b): undefined reference to `deflate'
collect2.exe: error: ld returned 1 exit status
zlib が必要だそうです。
$ gcc a.c -lpng -lz -static
ビルドは通りました。
$ od a.exe
DLL Name: KERNEL32.dll
DLL Name: msvcrt.dll
スタティックリンクになりました。
$ gcc a.c -lpng -static -lz
$ gcc a.c -static -lpng -lz
$ gcc -static a.c -lpng -lz
-static の順序に関係なく、スタティックリンクになりました。
しかしこれで満足していません。追加で調査が必要です。。。
2015年9月19日土曜日
2015年9月9日水曜日
Cygwinでpopplerをビルド
autoreconf を実施する度にエラーが発生致します。先に必要なパッケージを準備致します。
pkgconfig
gettext
libtool
libfontconfig-devel
libjpeg-devel
libtiff-devel
libopenjpeg-devel
libcurl-devel
libtoolize 実行
./configure --enable-zlib --enable-libcurl --prefix=$HOME/poppler
export LANG=C
make
pkgconfig
gettext
libtool
libfontconfig-devel
libjpeg-devel
libtiff-devel
libopenjpeg-devel
libcurl-devel
libtoolize 実行
./configure --enable-zlib --enable-libcurl --prefix=$HOME/poppler
export LANG=C
make
2015年9月5日土曜日
IIS 8.0 で、HTTP Error 403.18
IIS 8.0 で、HTTP Error 403.18
悩みました。
仮想ディレクトリの上に、更に Web アプリを重ねると、こういうエラーが出ます。たとえば、
例として、C:\inetpub\wwwroot\kagemai-0.8.8\html を参照する為、kagemai という名称の仮想ディレクトリを作成します。この後、Web アプリを変換ではなく、作成します。
通常、こういう事はできないのですが、PowerShell をつかうとできてしまいます。
仮想ディレクトリのアプリケーションプール(親ディレクトリのアプリケーションプール)と、Web アプリのアプリケーションプールが異なる場合に、出ます。
一旦、Web アプリを削除して、仮想ディレクトリも削除します。その後、直接、Web アプリを作成します。
New-WebVirtualDirectory に続けて ConvertTo-WebApplication を実行すると、こういう変な状態になりました。
直接、New-WebApplication を呼ぶと、いけました。
悩みました。
仮想ディレクトリの上に、更に Web アプリを重ねると、こういうエラーが出ます。たとえば、
例として、C:\inetpub\wwwroot\kagemai-0.8.8\html を参照する為、kagemai という名称の仮想ディレクトリを作成します。この後、Web アプリを変換ではなく、作成します。
通常、こういう事はできないのですが、PowerShell をつかうとできてしまいます。
仮想ディレクトリのアプリケーションプール(親ディレクトリのアプリケーションプール)と、Web アプリのアプリケーションプールが異なる場合に、出ます。
一旦、Web アプリを削除して、仮想ディレクトリも削除します。その後、直接、Web アプリを作成します。
New-WebVirtualDirectory に続けて ConvertTo-WebApplication を実行すると、こういう変な状態になりました。
直接、New-WebApplication を呼ぶと、いけました。
登録:
投稿 (Atom)