微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

假设我有

libmy.so.1.0 libmy.so.1 -> libmy.so.1.0 libmy.so.2.0 libmy.so.2 -> libmy.so.2.0 libmy.so -> libmy.so.2

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

gcc app.o -lmy -o app

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

如何在Python中使用librt函数

Windows下的exception处理和堆栈跟踪(MinGW / gcc)

在linux中检查函数库中是否存在

我可以在Redhat Linux机器上使用在Ubuntu上编译的共享库吗?

为什么linux的多主机使用x86_64-linux-gnu而不是lib64?

如何用共享库编译gcc?

在Linux上如何确定共享库依赖path?

在dynamic加载共享库时获取未定义的符号错误

警告:损坏的共享库列表

gdb无法打开共享对象文件

链接器也能够接受文件

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

从man ld :

-l namespec

–library = namespec

将由namespec指定的归档文件或目标文件添加到要链接文件列表中。 这个选项可以被使用多次。 如果namespec的格式为:filename,则ld将搜索名为filename的文件库路径 ,否则将搜索名为libnamespec.a的文件的库路径。

我注意到旧版本不支持它,所以请检查系统上的man ld -l或--library选项。

您也可以链接到提及其全名的文件

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐