我在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版。
答案 0 :(得分:1)
SCons检测到您正在尝试构建共享库,在正常情况下需要使用“-fPIC”选项。如果您的交叉编译器不支持它,您可以在构造环境后覆盖shared-lib flags变量的定义:
env = Environment( ... as above ...)
env.Replace(SHCCFLAGS='$CCFLAGS')
这应该在创建基于C的库时删除有问题的选项。您可能必须对“SHCXXFLAGS”变量执行相同操作,该变量负责编译C ++源代码...