【发布时间】:2011-08-21 00:45:43
【问题描述】:
我正在尝试使用 g++ 设计一个共享库的共享库,希望能够简化我的编译脚本并在未来简化我的更新过程,但我仍然是 GNU 工具和编写库的新手,在那.任何人都可以就 g++ 是否可以实现以下想法提供建议?
为方便起见,请考虑以下文件系统布局:
main.cpp
libraryX/
libraryX/libX.so
libraryX/libraryY/
libraryX/libraryY/libY.so
libraryX/libraryZ/
libraryX/libraryZ/libZ.so
我的目标是能够使用级联相对路径间接链接。例如,main.cpp 链接到 libraryX/libX.so,它链接到 libraryY/libY.so 和 libraryZ/libZ.so。是否可以只将 main.cpp 链接到 libX.so 并使用 libY.so 和 libZ.so 中定义的函数?
如果是这样,您能否提供一个需要这样做的标志示例?我一直在尝试使用来自 Google 的各种来源的以下命令的变体,但无济于事:
g++ -shared -fPIC -Wl-rpath=libraryX -LlibraryX -lX.so main.o -o executable
非常感谢任何指导或参考。
【问题讨论】:
-
您能否添加更多信息,说明您为什么要这样做?
-
Linux 发行版构建系统一直在删除这种链接技术。使用库 Y 中函数的库和程序应该总是链接 Y。链接 X 导致的 bug 太多了,假设它总是链接 Y,然后 X 的变化意味着 Y 不再链接。
-
@envu:我想要它主要是为了方便,因为我围绕这个概念设计了我的构建脚本。然而,在考虑了一夜之后,考虑到 Zan Lynx 的评论,这种方法的替代方案似乎不仅迫在眉睫,而且在设计方面也更好。
标签: c++ g++ shared-libraries