use*_*594 5 c linux linker cmake
我的项目链接到静态库libA.a版本1。
此可执行文件还链接到另一个静态库B。B链接到A,但版本2。
A版本1和2中的两个符号集都相同。如果我知道在我的项目和B之间没有与A有任何关系的共享,是否应该这样做?
我设法手动将其链接起来,并且似乎可以正常工作(也许有我不知道的陷阱)。
我不能将lib B设为共享对象,也不能将A用作共享对象。实际上,我只知道B静态地使用A,因为我和写B的那个人聊天。
gre*_*det 2
关于问题的“链接”部分,实际上静态库没有链接在一起。执行链接步骤只是为了获得最终的可执行文件。
事实上,您使用 A(版本 2)的标头编译了静态库 B。然后将可执行文件与 B 和 A(版本 1)库链接。
只要 A 的两个版本中的符号相同,就不存在编译问题。但你必须知道你的可执行文件实际上只嵌入并使用 A 的版本 1。
归档时间:
12 年,12 月 前
查看次数:
1576 次
最近记录: