码迷,mamicode.com
首页 > 其他好文 > 详细

链接库

时间:2018-09-23 13:52:43      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:文件搜索   情况下   函数   程序   home   使用   静态链接库   路径   -o   

链接库

       Linux下,大多数函数的头文件的默认路径是/usr/include/,而库文件的默认路径是/usr/lib/,但并不是所有的情况都是这样的。因此,在使用gcc编译时,必须为其制定所需要的头文件和库文件的路径。

       gcc采用搜索目录的办法来查找所需要的文件,-I选项可以向gcc的头文件搜索路径中添加新的目录。例如在当前目录下已成功编写了C程序文件foo.c,而在/home/zhangfan/inlude/目录下有编译该程序时所需要的文件,为了让gcc能够顺利找到他们,就可以使用-I选项:

   #gcc foo.c -I /home/zhangfan/inlude -o foo

       同样,如果使用了不在标准位置的库文件,那么可以通过使用-L选项向gcc的库文件搜索路径中添加新的目录。如果在/home/zhangfan/lib/目录下有foo.c程序链接时所需要的库文件libfoo.so,为了让gcc能够顺利的找到它们,并成功编译成可执行文件foo,可以使用以下命令:

  #gcc foo.c -L /home/zhangfan/lib -lfoo -o foo

 在上面的编译命令中,gcc对“-lfoo”字串进行处理时,会自动去链接名为libfoo.so的文件。

       Linux下的库文件分为两大类,分别是动态链接库(通常以.so结尾)和静态链接库(通常以.a结尾),两者的差别仅在于程序执行时所需的代码是在运行时动态加载的,还是在编译时静态加载的。默认情况下,gcc在链接时优先使用动态链接库,只有当动态链接库不存在时才考虑使用静态链接库。可以在编译时加上-static选项,强制使用静态链接库。如:在/home/zhangfan/lib/目录下有链接时所需要的库文件libfoo.so和libfoo.a,为了在链接时只用到静态链接库,而不是用动态链接库,可以使用如下命令:

  #gcc foo.c -L /home/zhangfan/lib -static -lfoo -o foo

 

链接库

标签:文件搜索   情况下   函数   程序   home   使用   静态链接库   路径   -o   

原文地址:https://www.cnblogs.com/steven-dou/p/9692155.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!