【发布时间】:2017-05-22 12:06:25
【问题描述】:
我尝试安装一个库,但运行 make 后出现以下错误。如何用flag重新编译?
make 扫描目标 pwrutils 的依赖关系 Linking CXX shared 库 libpwrutils.so /usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libboost_system.a(error_code.o): 重定位 R_X86_64_32 针对 `.rodata.str1.1' 时不能使用 制作共享对象;使用 -fPIC 重新编译 ,/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libboost_system.a: 添加符号时出错:错误值 collect2:错误:ld 返回 1 退出 status make[2]: * [libpwrutils/libpwrutils.so.1.0] 错误 1 make[1]: * [libpwrutils/CMakeFiles/pwrutils.dir/all] 错误 2 make: *** [all] 错误 2
【问题讨论】:
-
你在使用 CMake 吗?你喜欢
cmake .或类似的然后make还是你只有一个Makefile 然后你调用make? -
是的,我正在使用 Cmake。我试图删除 CMakeCache.txt 并再次运行 cmake 但它当然没有帮助。
-
您尝试将 shared 库
libpwrutils.so与 static 库libboost_system.a链接。这行不通。您应该安装 shared Boost 库,或者将您的库 (libpwrutils.so) 构建为 STATIC。顺便说一句,related question 描述了类似的问题。
标签: linux cmake shared-libraries