【发布时间】:2019-08-30 12:34:28
【问题描述】:
我目前正在从 cmake 环境中构建一个共享库 (lib1.so)。 lib1.so 依赖于外部静态库 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 从静态库更改为共享库会得到什么 -> 没有错误
有什么想法吗? 非常感谢!
【问题讨论】: