![]() |
睿智的甜瓜 · 一落千丈 [正文] - 成語檢視 - ...· 1 月前 · |
![]() |
听话的汤圆 · 著名艺术家阎肃去世:写下“敢问路在何方”的他 ...· 4 月前 · |
![]() |
谈吐大方的啤酒 · 错印色情网站链接,美玩具商致歉|美国|a妹| ...· 9 月前 · |
![]() |
打盹的单车 · 看完瑟瑟发抖!海大2018-2019学年学霸 ...· 12 月前 · |
![]() |
纯真的毛衣 · 国家版图意识宣传教育_往期访谈_福建省自然资源厅· 1 年前 · |
我目前正在cmake环境之外构建一个共享库(lib1.so)。lib1.so依赖于外部静态lib libLASlib.a (如果需要,我可以重新编译它)。到目前为止,一切都能在windows上运行,但当切换到linux时就是另一回事了:
/usr/bin/ld: lib/LASlib/libLASlib.a(lasreader.cpp.o): relocation R_X86_64_PC32 against symbol `_ZN9LASreader35read_point_filtered_and_transformedEv' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: Bad value
所以我尝试用-fPIC ->重新编译libLASlib,同样的错误
由于我的环境原因,我无法验证fpic是否有效地添加到了gcc命令行中。
以下是我试图确认的,fPIC没有问题:
readelf --dynamic libLASlib.a | grep lasreader.cpp.o -A2
File: libLASlib.a(lasreader.cpp.o)
There is no dynamic section in this file.
对于该记录,没有找到一个带有动态部分的cpp.o
我试着看看如果我把liblas从静态库改为共享库会有什么效果->没有错误
有什么想法吗?非常感谢!
发布于 2019-08-30 20:59:00
您需要使用
-fPIC
编译
lasreader.cpp
。如下所示:
g++ -c -fPIC -o lasreader.cpp.o lasreader.cpp
发布于 2019-08-30 23:24:59
fPIC确实没有被应用
柯南似乎没有转发fPIC选项
我编辑了CMAKELIST并添加了
set_property(TARGET LASlib PROPERTY POSITION_INDEPENDENT_CODE ON)
最终它通过了
https://stackoverflow.com/questions/57726864
复制相似问题
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2023 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号: 粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287