Ошибка построения, cmake, не может быть использована при создании общего объекта; перекомпилировать с -fPIC

0

Когда я создаю проект с cmake, я получил следующую ошибку. Хотя я попытался добавить флаг компиляции -fPIC помощью add_definition() в CMakeLists.txt, эта ошибка сохраняется. Может ли кто-нибудь помочь? Я новый парень в . Любые предложения будут высоко оценены.

/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
Теги:
cmake
build
shared
fpic

1 ответ

1

add_definitions предназначен для добавления определений препроцессора, а не для флага

-fPIC присутствует по умолчанию в флагах компоновщика для сборки совместно используемой библиотеки с GCC, см. Модули/Компилятор/GNU.cmake. Вы можете видеть все флаги, запустив make VERBOSE=1.

Что касается самой ошибки, см. Этот ответ.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню