1

我在 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 版本。

4

1 回答 1

1

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

env = Environment( ... as above ...)
env.Replace(SHCCFLAGS='$CCFLAGS')

在创建基于 C 的库时,这应该删除有问题的选项。您可能必须对负责编译 C++ 源代码的“SHCXXFLAGS”变量执行相同的操作...

于 2014-10-18T14:02:57.980 回答