c– 为什么在文件夹“ lib”和“usrlib”中链接库(如pthread)?

c– 为什么在文件夹“ lib”和“usrlib”中链接库(如pthread)?,第1张

概述1.为什么我们需要链接非标准库/包含非标准头文件,当它们已存在于正确的文件夹中时anirudh@anirudh-Aspire-5920:~/Documents/DUMP$locate libpthread /lib/libpthread-2.12.1.so /lib/libpthread.so.0 /usr/lib/libpthread.a /usr/lib

1.为什么我们需要链接非标准库/包含非标准头文件,当它们已存在于正确的文件夹中时

anirudh@anirudh-Aspire-5920:~/documents/DUMP$locate libpthread/lib/libpthread-2.12.1.so/lib/libpthread.so.0/usr/lib/libpthread.a/usr/lib/libpthread.so/usr/lib/libpthread_nonshared.a/usr/lib/xen/libpthread.a/usr/lib/xen/libpthread_nonshared.aanirudh@anirudh-Aspire-5920:

ld.so/ld-linux.so的手册页 – 动态链接器/加载器表示在默认路径/ lib和/usr/lib中搜索程序所需的必需库.
当我的库的.so文件已经在/ lib文件夹中时,为什么我需要专门链接它.
此外,-l选项用于链接静态库.但是当我对进程进行pmap时,我发现正在使用带扩展名为.so的pthread的动态库,而不是扩展名为.a的动态库.
同样

anirudh@anirudh-Aspire-5920:~/documents/DUMP$locate MysqL.h/usr/include/MysqL/MysqL.hanirudh@anirudh-Aspire-5920:~/documents/DUMP$

当它已存在于/usr/include文件夹中时,它是所有头文件的标准文件夹,那么为什么我需要使用-I选项专门包含它.最佳答案>虽然链接器在/ lib和/usr/lib中搜索所请求的库,但这并不意味着它会自动加载所有这些库.加载库是一项相当昂贵的 *** 作,因此链接器只加载它知道需要的库. -l是告诉它需要库的东西.有一些 *** 作系统和工具链会根据标题中的指令自动尝试找出需要哪些库(Visual C在windows上执行此 *** 作),但这种技术并未在linux上使用.
> -l用于静态库和共享库.如果两者都存在,则将使用共享版本,除非为链接器指定了-static.
>如果#include< mysql / mysql.h>,预处理器将在/usr/include/MysqL/MysqL.h中查找.也就是说,搜索不是递归的 – 如果你指定< mysql.h>预处理器将查看/usr/include/MysqL.h,但不查看/usr/include/MysqL/MysqL.h. 总结

以上是内存溢出为你收集整理的c – 为什么在文件夹“/ lib”和“/usr/lib”中链接库(如pthread)?全部内容,希望文章能够帮你解决c – 为什么在文件夹“/ lib”和“/usr/lib”中链接库(如pthread)?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1046724.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存