当前位置: 首页 > 知识库问答 >
问题:

不能在制作共享对象时使用;用-fpic重新编译

黄流觞
2023-03-14

我试图安装一个库,但运行make后出现以下错误。如何用标志重新编译?

使目标pwrutils的扫描依赖项链接CXX共享库libpwrutils.so/usr/bin/ld://usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../../x86_64-linux-gnu/libboost_system.a(error_code.o):在创建共享对象时不能使用针对`.rodata.str1.1‘的重新定位R_X86_64_32;使用-fpic重新编译,/usr/lib/gcc/x86_64-linux-gnu/4.8/.../.../.../../x86_64-linux-gnu/libboost_system.a:添加符号错误:错误值collect2:错误:ld返回1退出状态make[2]:*[libpwrutils/libpwrutils.so.1.0]错误1 make[1]:*[libpwrutils/cmakefiles/pwrutils.dir/all]错误2 make:*****[libpwrutils.dir/all]

共有1个答案

孙海
2023-03-14

如果有人遇到这种情况,并且将fpic标志添加到项目中没有帮助:

我也遇到了同样的问题,我的库在我的CMakeLists中正确地设置了-fpic标志,我可以在查看编译日志时验证它,例如,我看到:/usr/bin/c++-fpic…等

然后我意识到我链接了几个其他库,所以我不得不用-fpic重新编译这两个库,这就是问题所在。

 类似资料:
  • 我正在制作一个需要libgmp的共享库。我的目标是将静态libgmp嵌入到共享库中。 我尝试过。/configure with cflags=“-fpic”。此外,我还尝试修改了libgmp源代码的subdir中的所有Makefile,以便用-fpic编译所有代码。(脏活累活) 但是,当我将libgmp.a链接到共享库时,仍然收到错误消息。 /usr/bin/ld://usr/local/lib/

  • 问题内容: 我正在尝试使用通过Cmake创建的Makefile在Linux中编译共享库,但是运行make会出现以下错误: 我在CMakeLists.txt中提供以下命令,以便说我想要共享(.so)库: 为了避免上面显示的-fPIC错误,我还需要指定什么? 提前谢谢 问题答案: 需要使用-fPIC编译boost库:请看一下:如何使用boost.python中的-fPIC编译静态库。 尝试在项目中按c

  • 我试图在Linux中使用Cmake创建的Makefile编译一个共享库,但运行make时出现以下错误: 为了避免上面显示的-fpic错误,我还需要指定什么? 提前多谢

  • 我发现Jenkins共享(Groovy)库的名称有点混乱和讽刺,因为我发现Jenkins会为每个构建克隆共享库存储库,是的,为每个执行克隆相同的代码。 这与共享库的概念背道而驰:因为这些是由多个使用者加载的代码片段。想象一下,当您尝试加载任何已加载的库时,如果操作系统复制该库,情况会如何。。。(是的,每天数千人) 有没有办法避免这种严重的资源过载? 参考: https://jenkins.io/d

  • 问题内容: 我正在尝试从VPS中的makefile编译此源代码,但无法正常工作。VPS是64美分的操作系统 这是完整的错误 这是我的makefile: 有人知道怎么了吗? 问题答案: 执行编译器告诉您的操作,即使用进行重新编译。要了解此标志的作用以及在这种情况下为什么需要此标志,请参阅GCC手册的 代码生成选项 。 简而言之,术语“ 位置无关代码” (PIC)指的是与内存地址无关的生成的机器代码,

  • 问题内容: 因此,我正在尝试使用SWIG将C库(libnfc)移植到Java。 我已经准备好编译共享库,并且基本的“ nfc_version()”方法调用将起作用。但是,调用“ nfc_init()”进行设置会导致SIGSEGV错误。直接调用nfc库就可以了。 我用来生成共享库的命令: libnfc.i文件: 即,它应该包括libnfc提供的所有方法。 这是我得到的错误日志:http : //op