下面的问题是,应用程序如何在运行时解析不同版本的共享库?我想知道如何在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