scons根据CC链接问题

时间:2016-05-04 11:08:38

标签: linker scons

我正在编译一个带有scons脚本的库。根据文档scons,所有内容都会自动执行,并且内容应该正常工作。

但是,构建成功或失败,取决于我设置CC的内容(即使我总是调用相同的编译器):

/usr/bin/ld: context.os: relocation R_X86_64_32S against `a local symbol' can not be used when making a shared object; recompile with -fPIC

context.os使用以下参数构建。

env cc -o context.os -c ... -Wall -O2 -DNDEBUG -I. -I/usr/local/include ... context.c

所以scons会忘记-fPIC参数。但是,如果我设置CC=cc它会成功:

cc -o context.os -c ... -Wall -O2 -fPIC -DNDEBUG ...

如果我设置CC="ccache cc"

,则相同
ccache cc -o context.os -c ... -Wall -O2 -fPIC -DNDEBUG ...

当然,设置-fPIC后,链接在两种情况下都会成功。

所以,我想知道scons位置独立代码如何触发工作?为什么它会在CC="env cc"情况下搞砸?

0 个答案:

没有答案