c – g相对路径
我正在尝试使用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中定义的函数? 如果是这样,你能提供一个需要这样做的标志的例子吗?我一直在尝试使用谷歌的各种来源的以下命令的变体无济于事: g++ -shared -fPIC -Wl-rpath=libraryX -LlibraryX -lX.so main.o -o executable 非常感谢任何指导或参考. 解决方法
不要这样做(即使你可以弄清楚如何).
当您链接-lX时,静态链接器必须知道“此链接的一部分”的所有其他共享库.由于-lY不在链接行上,静态链接器会给你一个错误,或者它必须以某种方式找出libY.so的来源.对于后者,它必须复制运行时加载程序将执行的RPATH搜索.此复制容易出错(静态链接器可能不使用完全相同的算法)并且最好避免. 最后,您的命令行完全错误:-shared意味着您要求链接器提供共享库,但您显然是在尝试链接可执行文件.链接可执行文件时通常不应使用-fPIC.另外,-Wl-rpath = …应该是-Wl,-rpath = …(逗号很重要). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |