Когда я строю проект с помощью cmake, я получаю следующую ошибку. Хотя я пытался добавить флаг компиляции -fPIC
от add_definition()
в CMakeLists.txt эта ошибка сохраняется. Кто-нибудь может помочь? Я новый парень CMake. Любые предложения будут высоко оценены.
/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
add_definitions is предназначен для добавления определений препроцессора, а не флага
-fPIC
присутствует по умолчанию во флагах компоновщика для сборки общей библиотеки с GCC, см. Модули / Compiler / GNU.cmake. Вы можете увидеть все флаги, запустив make VERBOSE=1
,
Что касается самой ошибки, см. этот ответ.