Cross compiling 从库交叉编译中删除默认-fpic标志

Cross compiling 从库交叉编译中删除默认-fpic标志,cross-compiling,scons,mingw-w64,fpic,Cross Compiling,Scons,Mingw W64,Fpic,我在SConstruct中的环境设置如下: env = Environment( CC = 'i686-w64-mingw32-gcc', LINK = 'i686-w64-mingw32-gcc', CCFLAGS = '-Werror', RANLIB = 'i686-w64-mingw32-ranlib', AR = 'i686-w64-mingw32-ar' ) 尽管如此,scons还是在编译中添加了-fPic参数: scons: Reading

我在SConstruct中的环境设置如下:

env = Environment(
    CC = 'i686-w64-mingw32-gcc',
    LINK = 'i686-w64-mingw32-gcc',
    CCFLAGS = '-Werror',
    RANLIB = 'i686-w64-mingw32-ranlib',
    AR = 'i686-w64-mingw32-ar'
)
尽管如此,scons还是在编译中添加了-fPic参数:

scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
i686-w64-mingw32-gcc -o src/apply.os -c -Werror -fPIC src/apply.c
src/apply.c:1:0: error: -fPIC ignored for target (all code is position independent) [-Werror]
由于scons缺少任何交叉编译功能,我想删除任何“强制打开”编译器参数


我正在使用该工具的2.3.4版。

SCons检测到您正在尝试构建一个共享库,在正常情况下需要使用“-fPIC”选项。如果交叉编译器不支持它,则可以在构建环境后覆盖共享库标志变量的定义:

env = Environment( ... as above ...)
env.Replace(SHCCFLAGS='$CCFLAGS')
在创建基于C的库时,这应该删除有问题的选项。您可能需要对“SHCXXFLAGS”变量进行同样的操作,该变量负责编译C++源……/P>