- 1、本文档共31页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章 GCC编译器part2
第五章 GCC编译器
东软IT人才实训中心
3 Sept. 2008
© Neusoft Confidential
第五章:GCC编译器
目标:
本章使学员熟练掌握linux操作系统下 学时:4 学时
GCC编译器的使用,通过本课的学习,学
教学方法:讲授ppt+上机操
员应该掌握如下知识: 作+实例演示
了解GCC编译选项
掌握如何利用GCC编译程序
5.4 gcc使用第三方库
在Linux下开发软件时,完全不使用第三方函数库的情况是比较
少见的,通常来讲都需要借助一个或多个函数库的支持才能够完
成相应的功能。
从程序员的角度看,函数库实际上就是一些头文件(.h)和库文
件(.so或者.a)的集合。虽然Linux下的大多数函数都默认将头
文件放到/usr/include/ 目录下,而库文件则放到/usr/lib/ 目录下,
但并不是所有的情况都是这样。正因如此,GCC在编译时必须有
自己的办法来查找所需要的头文件和库文件。
GCC采用有哪些信誉好的足球投注网站目录的办法来查找所需要的文件,-I选项可以向
GCC的头文件有哪些信誉好的足球投注网站路径中添加新的目录。例如,如果在
/home/hxy/upgrade/include/ 目录下有编译时所需要的头文件,
为了让GCC能够顺利地找到它们,就可以使用-I选项:
– gcc foo.c -I /home/xiaowp/include -o foo
在一个gcc命令中可以用多个-I
5.4.1 两大类库形式
C/C++可以使用两种库.一种是静态库,另外一种是动态库。
– 静态库在链接时会把库目标代码与最终的可执行程序一起链
接到一个文件,这样相对尺寸较大.但处理简单.
– 而动态库是可执行程序在运行时动态加载到进程内存中去。
动态库与可执行程序是分离的两部分文件。
– 两者作用完全等效,主要是使用方法不同。由开发者根据项
目情况自行评估使用哪种形式.
Windows下的静态库是以lib为后缀名的文件,而动态库是以
DLL为后缀名的文件。
Linux下的动态链接库是.so为后缀,静态链接库以.a为后缀名
5.4.2 Linux库的命名
linux库的命名有一个特殊的要求,即要以lib打头,以.so或.a结尾
– libc.so #标准C库,动态链接库
– libpthread.a #线程库,静态链接库
– 在一般使用时,为防止不同版本库互相覆盖,一般还在系统
库名后加入版本号。
• libm. 6. so #math库ver 6.0版本
• libc-2.3.2.so #标准C ver 2.3.2动态库
– linux一般把系统库放在/lib下。
– 这是大部分库命名的习惯,也可以不遵守,如果强行做一个
叫mystd.a 的库,使用起来很不方便,如不能使用-l参数等,
所以建议不要这样做。
5.4.3 gcc链接库
gcc是在链接时,把库加入程序中。
一个特殊静态链接库方式,把库完整名字加入
– gcc -o hello hello.o libmy.a
• 链接hello.o,和库libmy.a到程序hello中(静态链接)
– gcc -o hello hello.o libmy.so
• 链接hello.o,和库libmy.so到程序hello中,注意这里没有
直接把libmy.so代码加入hello中(动态链接)
– 这一方法主要用于链接不标准库名称,或混和链接(即一部
分库用于静态版本,一部分库用动态版本)。但不是正规用法,
强烈建议不要使用这一方法。使用-l参数为标准的表达方式。
5.4.3 gcc链接库
gcc -l参数用来链接库标准表达式方式.
-l接的库名,是去掉lib和后缀名(.so,.a)剩下的部分,
–
文档评论(0)