iccでdelegateをコンパイルする
Cent OS上で,gccじゃなくてicc(Intel C Compiler)でコンパイルしようと思い,
# tar xvf delegate9.9.2.tar.gz # cd delegate9.9.2 # export CC=icc # make
とやりました.ガンガン警告を出しながら進みます.
「警告は無視」と言いますが,この警告はかなり気になります.でも,取り合えず無視.
svstat.c(522): 警告 #187: "==" を使用すべきところで "=" が使用されました。 if( fc = '[' ){ ^
ところが,終わり間近になって止まってしまいます.
icc -L../lib -o embed embed.o version.o ../srcsign.o \ ../lib/library.a ../lib/libmimekit.a ../lib/libmd5.a \ -lnsl -ldl -lutil -lpthread -MT -lc ../lib/libsubst.a icc: error #10177: ターゲットの依存関係情報には依存関係オプションが必要です。
これ,オプションが悪いのです.
WIndows用のVisual C++には,オプション「-MT」というのがあり,マルチスレッドに対応させます.
このオプションはgccにはありません.
ところがiccには「-MT
delegateは,このWindows用のオプションの-MTをlinux上でコンパイルした時も,入れてしまうようです.
そこで強引に変更.
src/Makefileの中に,次のような箇所があります.
#ifdef MSWIN ###################################################### WINLIB = WS2_32.LIB ADVAPI32.LIB OLE32.LIB SHELL32.LIB UUID.LIB \ USER32.LIB \ -MT #endif ############################################################
これが悪いので,
#ifdef MSWIN ###################################################### WINLIB = WS2_32.LIB ADVAPI32.LIB OLE32.LIB SHELL32.LIB UUID.LIB \ USER32.LIB # -MT #endif ############################################################
と,-MTを消してしまいます.
これでOk. 最後にチェックサムが違うと警告が出ますが,src/delegatedが出来ています.