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)?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)