質問

LinuxとWindows(MINGWクロスコンパイラを使用)にコンパイルしたいAutoconf/libtoolを使用して共有ライブラリを書いています。 Linux(およびおそらくそれをサポートする他のプラットフォーム)については、-fpicを設定する必要があります。それで、私はそれをmakefile.amのcflagsに入れました。しかし、Mingwとクロスコンパイルすると、GCCは警告に不満を言います。

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

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

役に立ちましたか?

解決

設定する必要はありません -fPIC 手動で、 libtool どのタイプのバイナリ/ライブラリを構築しているかを伝えると、それを追加します。

lib_LTLIBRARIES = mylibrary.la
mylibrary_la_SOURCES = mylibrary.c

これは両方を生成できます mylibrary.so 写真(必要に応じて)とa mylibrary.a なく、他のAutoCONF/Automakeオプションに依存します。 (おそらくのようなものです .dll.lib Windowsで、しかし私はそのプラットフォームを使用していません。)

他のヒント

configure.acで以下を使用して-fpicを条件付きで追加しました。

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"])
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top