2017-01-07 2 views
0

Я попытался установить библиотеку, но после запуска make у меня появилась следующая ошибка. Как перекомпилировать с флагом?не может использоваться при создании общего объекта; перекомпилировать с -fPIC

make Scanning dependencies of target pwrutils Linking CXX shared library libpwrutils.so /usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libboost_system.a(error_code.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC ,/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libboost_system.a: error adding symbols: Bad value collect2: error: ld returned 1 exit status make[2]: * [libpwrutils/libpwrutils.so.1.0] Error 1 make[1]: * [libpwrutils/CMakeFiles/pwrutils.dir/all] Error 2 make: *** [all] Error 2

+0

Используете ли вы CMake? Вы делаете что-то вроде 'cmake .' или аналогичного, а затем' make' или у вас есть только Makefile и вы вызываете 'make'? – fedepad

+0

да Я использую Cmake. Я попытался удалить CMakeCache.txt и снова запустить cmake, но это, конечно, не помогло. – Kasia

+0

Вы пытаетесь связать ** общую ** библиотеку 'libpwrutils.so' с ** статической ** библиотекой' libboost_system.a'. Это не работает. Вы должны либо установить * shared * Boost library, либо создать свою библиотеку ('libpwrutils.so') как * STATIC *. BTW, [связанный вопрос] (http://stackoverflow.com/questions/26549137/shared-library-on-linux-and-fpic-error) описывает аналогичную проблему. – Tsyvarev

ответ

0

Расширение флагов компилятора в главном файле CMakeLists.txt по мере необходимости.

############################################################ 
# Compiler and linker flags 
set(CMAKE_CXX_FLAGS    " ${CMAKE_CXX_FLAGS_INIT} -std=c++11 -fPIC") 
set(CMAKE_CXX_FLAGS_DEBUG   "-g -DDEBUG") 
set(CMAKE_CXX_FLAGS_MINSIZEREL  "-Os -DNDEBUG") 
set(CMAKE_CXX_FLAGS_RELEASE  "-O4 -DNDEBUG") 
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g -DDEBUG" 

Снова удалите кеш. Запустите cmake и проверьте ccmake или cmake-gui, не является ли CMAKE_BUILD_TYPE, но один из Debug, Release и т. Д.

Смежные вопросы

 Смежные вопросы