第5章 GCC编译器part2.pdf

  1. 1、本文档共31页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档