autoconf set -fPIC 仅在必要时

kay*_*ahr 4 c mingw shared-libraries libtool

我正在使用 autoconf/libtool 编写一个共享库,我想为 Linux 和 Windows 编译它(使用 mingw 交叉编译器)。对于 Linux(可能还有其他支持它的平台),我需要设置 -fPIC。所以我把它放到了 Makefile.am 的 CFLAGS 中。但是当我用 mingw 交叉编译它时,gcc 会发出警告:

warning: -fPIC ignored for target (all code is position independent)
Run Code Online (Sandbox Code Playgroud)

因此,显然 Windows 代码不需要此选项。这只是一个警告,但无论如何我都想摆脱它。我怎样才能做到这一点?也许已经有一个 libtool/autoconf 功能可以检查该选项是否受支持并且仅在需要时才设置它,所以我不必在 Makefile.am 中手动执行此操作?

eph*_*ent 5

您不需要-fPIC手动设置,libtool如果您告诉它您正在构建什么类型的二进制文件/库,则会添加它。

lib_LTLIBRARIES = mylibrary.la
mylibrary_la_SOURCES = mylibrary.c
Run Code Online (Sandbox Code Playgroud)

根据其他 Autoconf/Automake 选项,这可以生成mylibrary.so带 PIC(如果需要)和mylibrary.a不带 PIC 。(可能类似于Windows 上的.dll.lib,但我不使用该平台。)