如何指定链接时使用的库版本?

下面的问题是,应用程序如何在运行时解析不同版本的共享库?我想知道如何在link命令行上指定要使用的库的哪个版本

假设我有

libmy.so.1.0
libmy.so.1->libmy.so.1.0
libmy.so.2.0
libmy.so.2->libmy.so.2.0
libmy.so->利比,所以

通常指定要与可执行文件链接的库的方法不显示要使用的版本。此外,人们很可能希望与最新版本相链接。因此,通常的线路在大多数情况下工作良好

gcc app.o-lmy-o app

链接app的命令行应该使用库的版本1是什么

链接器也可以接受文件名

gcc app.o-l:libmy.so.1-o app

手册ld

-l名称规范
–library=namespec
将namespec指定的存档文件或对象文件添加到要链接的文件列表中。此选项可以使用任意次数如果
namespec的格式为:filename,ld将在库路径中搜索名为filename的文件,否则将搜索库
名为libnamespec.a的文件的路径

我注意到旧版本不支持它,所以请在系统上选中manld-l--library选项

您还可以链接到该文件,并提及其全名

gcc app.o/mylibpath/libmy.so.1-o app

发表评论