linux默认头文件
2015-08-23 18:51
190 查看
在linux下开发软件是,完全不使用第三方函数库的情况是比较少的,通常来讲都需要接助一个或者多个函数库的支持才能完成相应的功能。从程序员的角度来看,函数库实际上就是一些头文件(.h)和库文件(.so或者.a)的集合。虽然linux下的大对数函数都默认将头文件放到/usr/include/目录下,而库文件则放到/usr/lib/目录下,但并不是所有的情况都是这样。正因如此,GCC在编译时必须有自己的办法来查找所需的头文件和库文件。
GCC采用搜索目录的办法来查找所需要的文件,-l选项可以向GCC的头文件搜索路径中添加新的目录。例如,如果在/home/xiaowp/lib/目录下有编译时需要的头文件,为了让GCC能够顺利的找到,就可以使用-l选项:
#gcc foo.c -l /home/xiaowp/incude -o foo
同样,如果使用了不在标准位置的库文件,那么可以通过-L 选项向GCC的库文件搜索路径中添加新的目录。例如,如果在/home/xiaowp/lib/目录下有链接时所需要的库文件libfoo.so,为了让GCC能够顺利地找到它,可以使用下面的命令:
#gcc foo.c -L /home/lib -lfoo -o foo
值得好好解释一下的事-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 -lfoo -o foo
GCC采用搜索目录的办法来查找所需要的文件,-l选项可以向GCC的头文件搜索路径中添加新的目录。例如,如果在/home/xiaowp/lib/目录下有编译时需要的头文件,为了让GCC能够顺利的找到,就可以使用-l选项:
#gcc foo.c -l /home/xiaowp/incude -o foo
同样,如果使用了不在标准位置的库文件,那么可以通过-L 选项向GCC的库文件搜索路径中添加新的目录。例如,如果在/home/xiaowp/lib/目录下有链接时所需要的库文件libfoo.so,为了让GCC能够顺利地找到它,可以使用下面的命令:
#gcc foo.c -L /home/lib -lfoo -o foo
值得好好解释一下的事-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 -lfoo -o foo
相关文章推荐
- Linux socket 初步
- 10 篇对初学者和专家都有用的 Linux 命令教程
- Linux 与 Windows 对UNICODE 的处理方式
- Ubuntu12.04下QQ完美走起啊!走起啊!有木有啊!
- 解決Linux下Android开发真机调试设备不被识别问题
- 运维入门
- 运维提升
- Linux 自检和 SystemTap
- Ubuntu Linux使用体验
- c语言实现hashmap(转载)
- Linux 信号signal处理机制
- linux下mysql添加用户
- Scientific Linux 5.5 图形安装教程
- 基于 Linux 集群环境上 GPFS 的问题诊断
- 谁是桌面王者?Win PK Linux三大镇山之宝
- vivi下重新调整分区
- Linux VS Unix:Linux欲一统天下 Unix不死
- linux下设定环境变量
- Linux下修改MySQL编码的方法