4

LinuxおよびWindows用にコンパイルしたいautoconf/libtoolを使用して共有ライブラリを作成しています(mingwクロスコンパイラを使用)。Linux(およびそれをサポートする他のプラットフォーム)の場合、-fPICを設定する必要があります。そこで、Makefile.amのCFLAGSに入れました。しかし、mingwとクロスコンパイルすると、gccは警告を表示します。

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

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

4

2 に答える 2

5

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

lib_LTLIBRARIES = mylibrary.la
mylibrary_la_SOURCES = mylibrary.c

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

于 2011-01-24T21:12:18.120 に答える
2

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"])
于 2016-01-29T14:02:28.587 に答える