linux软件开发时给gcc指定头文件和库文件路径的方法

在Linux 下开发软件时,完全不使用第三方函数库的情况是比较少见的,通常来讲都需要借助一个或多个函数库的支持才能够完成相应的功能。从程序员的角度看,函数库实 际上就是一些头文件(.h)和库文件(.so或者.a)的集合。虽然Linux下的大多数函数都默认将头文件放到/usr/include/目录下,而库 文件则放到/usr/lib/目录下,但并不是所有的情况都是这样。正因如此,GCC在编译时必须有自己的办法来查找所需要的头文件和库文件。

GCC采用搜索目录的办法来查找所需要的文件,-I 选项可以向GCC的头文件搜索路径中添加新的目录。例如,如果在/home/xiaowp/include/目录下有编译时所需要的头文件,为了让GCC能够顺利地找到它们,就可以使用-I选项

同样,如果使用了不在标准位置的库文件,那么可以通过-L选项向GCC的库文件搜索路径中添加新的目录。例如,如果在/home/xiaowp/lib/目录下有链接时所需要的库文件libfoo.so,为了让GCC能够顺利地找到它,可以使用下面的命令:

值得好好解释一下的是-l选项,它指示GCC去连接库文件libfoo.so。Linux下 的库文件在命名时有一个约定,那就是应该以lib三个字母开头,由于所有的库文件都遵循了同样的规范,因此在用-l选项指定链接的库文件名时可以省去 lib三个字母,也就是说GCC在对-lfoo进行处理时,会自动去链接名为libfoo.so的文件。

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

复制代码

代码如下:

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

(0)

相关推荐

  • 电脑内的office2010软件提示错误1320,指定路径太长时应如何解决

    当我们在使用电脑的时候,会使用到office2010软件来处理一些文档或数据,如果在使用软件的时候,弹出错误1320,指定路径太长的错误提示时,应如何解决该问题呢?接下来就由小编来告诉大家.具体如下: ...

  • 安卓软件开发就业前景分析

    ●什么是安卓 Android一词的本义指"机器人",同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统.中间件.用户界面和 ...

  • Linux下查看指定文件夹和文件的大小

    df命令:查看目前所有文件系统的可用空间及使用情况 df可以查看一级文件夹大小、使用比例、档案系统及其挂入点,但对文件却无能为力 复制代码 代码如下: df -lh 参数 -h 表示使用「Human- ...

  • Linux软件安装之RPM的安装技巧

    Linux软件安装之RPM的安装技巧

  • 安装软件时提示错误1719 无法访问windows install服务的解决方法

    因我们经常承接服务器安全设置工作,所以经常会碰到一些小问题,通过我们安装软件的经验,平时都是好好的,但这次升级了补丁,没有重启服务器,所以安装软件才会出现错误1719 无法访问windows inst ...

  • 浅谈25年Linux内核开发经历总结出来的九条经验

    原文:9 lessons from 25 years of Linux kernel development 作者:Greg Kroah-Hartman 翻译:雁惊寒 Linux内核社区在2016年庆 ...

  • 手机软件开发流程

    代码 在网站设计时,可以很方便地添加一个新页面,并为之创建链接,但手机外包公司在手机应用中却不能这么做,所有元素都必须从一开始就确定,任何细微的改动都有可能会引发意想不到的后果.手机代码的结构就像一个 ...

  • 怎么软件开发

    操作方法 01 学习计算机编程语言 想要进行软件开发,学习计算机编程语言是必不可少的.例如java.php.python.html.css.js等等. 02 学习框架技术 学会使用框架,可以大大的提高 ...

  • 安卓开发-安卓软件开发教程

    Android是由谷歌在2007年推出的一个开放系统平台,主要针对移动设备市场,目前版本为Android 4.4.Android基于Linux,开发者可以使用Java或C/C++开发Android应用 ...