首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >即使添加了-fPIC编译标志,“用-fPIC重新编译”错误仍然存在。

即使添加了-fPIC编译标志,“用-fPIC重新编译”错误仍然存在。
EN

Stack Overflow用户
提问于 2016-01-19 20:16:48
回答 1查看 4.9K关注 0票数 3

我已经下载了一些C++,我想从源代码中编译。在命令行运行cmake ../srcmake之后,在构建目录中,我得到以下错误:

代码语言:javascript
复制
/usr/bin/ld: /usr/local/lib/libBulletCollision.a(btDbvtBroadphase.o):
relocation R_X86_64_32S against `_ZTV16btDbvtBroadphase' can not be used when making a shared object;
recompile with -fPIC

我认为这与尝试创建共享库有关,但没有提供必要的内存(虽然我不完全理解这一点.)。总之,按照我所见过的建议,我尝试了以下几点:

代码语言:javascript
复制
make CXXFLAGS='-fPIC'

然而,这给了我与以前完全相同的错误。至于为何这不能解决问题,有何意见?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-19 23:04:10

我相信马克说这个错误是关于libBulletCollision.a的,他是正确的。您正在构建一个用.so构建的-fPIC,但是链接到一个不使用-fPIC.a。您需要更改和构建一个静态库,或者使用libBulletCollision.a重新构建和安装一个新的依赖的-fPIC

顺便说一句,您应该在cmake配置步骤中以更永久的方式将-fPIC标志添加到您的构建中,而不是在运行make时以这种瞬时方式覆盖make

此外,在调试构建时,将make VERBOSE=1与cmake生成的makefile构建一起使用是非常有帮助的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34886150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档