首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >链接到共享库的正确方式是什么?

链接到共享库的正确方式是什么?
EN

Stack Overflow用户
提问于 2013-07-11 03:46:35
回答 1查看 1.6K关注 0票数 2

我正在交叉编译一个C应用程序,并使用-lasound链接到alsa库

我最新的交叉编译器说它找不到这个库,所以我在编译器的库目录中查找并找到了。

libasound.la libasound.so.2 libasound.so.2.0.0

我没有找到libasound.so,所以为了解决我的问题,我创建了一个sym链接

ln -s libasound.so.2.0.0 libasound.so

现在看起来一切都很好。但我确信这不是正确的方式。我是否应该使用不同的链接器选项来链接它?每个不同的libasound.*文件意味着什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-11 04:19:59

Linux中最常用的库名称是:

  • ,真正的库是libasound.so.2.0.0。最后3个数字是库版本(major.minor.revision).
  • libasound.so.2是指向首选(最新) 2.*版本库的符号链接,如果您在系统中安装了多个库。假设所有的2.*版本都是向后的二进制文件,compatible.
  • libasound.la是一个文本文件,其中包含大量关于与libtool一起使用的库的信息。如果使用libtool,并且另一个autotools.
  • libasound.so是工具链要使用的库的符号链接,则非常有用。这是您使用-lasound.

链接时要查找的文件

您错过了最后一个,可能是因为在基于debian的系统中,它只与libasound-dev包一起安装。您可以简单地手动创建它。在运行时不需要它,因为库的头中有一个SONAME条目:

代码语言:javascript
复制
$ objdump -x /usr/lib/libasound.so | grep SONAME
  SONAME               libasound.so.2

这使得动态链接器在运行时查找该名称,而不管您使用了什么编译器选项。

我希望我已经理解了这一点,因为它有点复杂...

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17579622

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档