睿智的楼房 · overflow-y: scroll - ...· 1 周前 · |
骑白马的毛巾 · 使用BufferedImage对象的高内存消 ...· 6 天前 · |
安静的小熊猫 · 这些红极一时的宝藏歌手,为什么“消失”了?_ ...· 1 月前 · |
爱旅游的绿豆 · 虽迟但到,华为手环7,第一款鸿蒙系统手环。_ ...· 2 月前 · |
健壮的李子 · 这些日漫你都看过哪些呢???_日本· 4 月前 · |
老实的热水瓶 · 中证1000成分股有哪些?中证1000股票成 ...· 1 年前 · |
傻傻的甘蔗 · 北方持续性高温,这份“热腾腾”的高温科普,让 ...· 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