制作共享对象时不能使用构建错误cmake;用-fPIC重新编译

时间:2014-09-18 00:47:45

标签: c++ build cmake shared fpic

当我使用cmake构建项目时,出现以下错误。虽然我尝试在CMakeLists.txt中添加-fPIC的编译标记add_definition(),但此错误仍然存​​在。有人可以帮忙吗?我是的新人。任何建议都将受到高度赞赏。

/usr/bin/ld: /act/mvapich2-1.9/gcc-4.7.2/lib/libmpich.a(mvapich_malloc.o): relocation R_X86_64_32S against `.bss' can not be used when making a shared object; recompile with -fPIC
/act/mvapich2-1.9/gcc-4.7.2/lib/libmpich.a: could not read symbols: Bad value
collect2: error: ld returned 1 exit status
make[2]: *** [src/libstracker.so] Error 1
make[2]: Leaving directory `/home/xxxx/success/AutomaDeD-master'
make[1]: *** [src/CMakeFiles/stracker.dir/all] Error 2
make[1]: Leaving directory `/home/xxxx/success/AutomaDeD-master'
make: *** [all] Error 2

1 个答案:

答案 0 :(得分:1)

add_definitions旨在添加预处理程序定义,而不是标志

默认情况下,

-fPIC存在于使用GCC的共享库构建的链接器标志中,请参阅Modules/Compiler/GNU.cmake。您可以通过运行make VERBOSE=1来查看所有标记。

关于错误本身,请参阅this answer