我已经下载了一些C++,我想从源代码中编译。在命令行运行cmake ../src和make之后,在构建目录中,我得到以下错误:
/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我认为这与尝试创建共享库有关,但没有提供必要的内存(虽然我不完全理解这一点.)。总之,按照我所见过的建议,我尝试了以下几点:
make CXXFLAGS='-fPIC'然而,这给了我与以前完全相同的错误。至于为何这不能解决问题,有何意见?
发布于 2016-01-19 23:04:10
我相信马克说这个错误是关于libBulletCollision.a的,他是正确的。您正在构建一个用.so构建的-fPIC,但是链接到一个不使用-fPIC的.a。您需要更改和构建一个静态库,或者使用libBulletCollision.a重新构建和安装一个新的依赖的-fPIC。
顺便说一句,您应该在cmake配置步骤中以更永久的方式将-fPIC标志添加到您的构建中,而不是在运行make时以这种瞬时方式覆盖make。
此外,在调试构建时,将make VERBOSE=1与cmake生成的makefile构建一起使用是非常有帮助的。
https://stackoverflow.com/questions/34886150
复制相似问题