2011-01-24 5 views
3

私はLinux用とWindows用にコンパイルしたいautoconf/libtoolを使って共有ライブラリを作成しています(mingwクロスコンパイラを使用しています)。 Linux(とそれをサポートする他のプラットフォーム)では、私は-fPICを設定する必要があります。だから私はMakefile.amのCFLAGSに入れました。しかし、私は時にmingwのでそれをクロスコンパイル後、gccが警告で文句を言う:autoconfは-fPICが必要な場合にのみ設定します

warning: -fPIC ignored for target (all code is position independent) 

だから明らかにこのオプションは、Windowsのコードは必要ありません。それはただの警告ですが、とにかくそれを取り除きたいのです。これどうやってするの?たぶん既にオプションがサポートされているかどうかをチェックし、必要なときにのみ設定するlibtool/autoconf機能があるので、Makefile.amで手動で行う必要はありませんか?

答えて

4

-fPICを手動で設定する必要はありません。作成しているバイナリ/ライブラリの種類を教えたら、libtoolを追加してください。

lib_LTLIBRARIES = mylibrary.la 
mylibrary_la_SOURCES = mylibrary.c 

これは、他のAutoconf/Automakeのオプションに応じて、なしPICとmylibrary.so(必要な場合)とmylibrary.aの両方を生成することができます。 (おそらくWindows上.dll.libのようなものが、私はそのプラットフォームを使用しないでください。)

+0

シンプルだったこと。私はちょうどそれを取り除かなければならなかった、それは動作する。私はとても馬鹿だと感じる。ありがとう。 – kayahr

+0

* "手動で-fPICを設定する必要はありません。" * - ああ、理論と実践の違い... – jww

0

私は条件付きで-fPICを追加するにはconfigure.acに次のように使用しています

AC_MSG_CHECKING(whether fPIC compiler option is accepted) 
SAVED_CFLAGS="$CFLAGS" 
CFLAGS="$CFLAGS -fPIC -Werror" 
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [return 0;])], 
    [AC_MSG_RESULT(yes) 
    CFLAGS="$SAVED_CFLAGS -fPIC"], 
    [AC_MSG_RESULT(no) 
    CFLAGS="$SAVED_CFLAGS"]) 
関連する問題