g++基础.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* * * * * * g++基础 淘宝搜索中心 野王 * 目录 g++ 编译过程 常用编译选项 如何编译静态库 如何编译共享库和动态库 常用命令 g++编译过程 g++是unix 系统下GNU的c++编译器 g++在执行编译工作的时候,总共需要4步 1. 预处理,生成.i的文件 [预处理器cpp] 2. 将预处理后的文件转换成汇编语言,生成文件.s [egcs] 3. 由汇编变为目标代码(机器代码)生成.o的文件 [as] 4. 连接目标代码,生成可执行程序 [ld] g++常用编译选项 选项必须分立给出: `-pg完全不同于`-p -g . -c: 编译或汇编源文件,但不作连接. 编译器输出对应于源文件的目标文件. 缺省情况下, G++通过用`.o‘替换源文件名后缀产生目标文件名. 可以使用-o选项选择其他名字 样例: g++ -c bdb.cpp 输出文件 bdb.o -o file: 指定输出文件为file. 该选项不在乎G++产生什么输出,无论是可执行文件,目标文件,汇编文件还是预处理后的C代码. 如果没有使用`-o‘选项, 默认的输出结果是: 1. 可执行文件为a.out 2. source.suffix 的目标文件是source.o 3. 汇编文件是 source.s 4. 而预处理后的C源代码送往标准输出. 样例: g++ -o txt2db taokeIDList2db.cpp bdb.cpp -ldb_cxx -Wall 输出所有编译警告信息, 建议一定要加上 -Dmacro=xxx 定义宏,类似于#define的功能 g++ -o testMarco testMarco.cpp -DDEBUG=100 -shared 生成一个共享库文件 g++ -shared -o libtest.so bdb.o -fPIC 编译器生成位置无关目标码,适用于动态连接(dynamic linking) -llibrarytest (小写的L) 1. 连接名为librarytest的库文件. 2. 连接器在标准搜索目录中寻找这个库文件,库文件的真正名字是liblibrarytest.so(动态库) liblibrarytest.a(静态库) 3. 是按严格文件名搜索 ,如果so文件名带版本号,需要创建软连接 4. 编译时搜索目录包括 : 1. 用户以`-L选项指定的路径 2. LIBRARY_PATH 3. 系统目录 /lib /usr/lib 5. 运行时搜索目录包括 : 1. LD_LIBRARY_PATH 2. ld.so.cache /etc/ld.so.conf 3. 系统目录 /lib /usr/lib 指定`-l‘选项和指定文件名的区别是, `-l选项用`lib’和`.a‘把library包裹起来,而且搜索一些目录. (可能会找错) 动态库和静态库同名时,优先使用动态库 8. 如何同时链接静态库和动态库 g++ -o test5 taokeIDList2db.cpp -ldb_cxx -Bstatic –ltest -Ldir 在库文件的搜索路径列表中添加dir 目录.,可添加多个 -Idir ( 大写的i ) 在头文件的搜索路径列表中添加dir 目录. -g 产生调试信息. GDB能够使用这些调试信息. -Olevel 使用了`-O选项,编译器会试图减少目标码的大小和执行时间. - O2 执行几乎所有的优化工作. 建议用这个选项 - O3 除了打开-O2所做的一切, 它还打开了-finline-functions选项. 如果有多个-O选项, 最后一个选项才是生效的选项. 如何编译静态库 静态库定义 就是一些.o文件打成的包,在被链接后,将成为程序文件一部分 编译方法 g++ -c bdb.cpp ar rcs libtest.a bdb.o ( 后缀.a ) 链接方法 g++ -Wall -o test1 taokeIDList2db.cpp -ltest -L./ -ldb_cxx 如何编译共享库和动态库 共享库

文档评论(0)

ajgoaw + 关注
文档贡献者

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

1亿VIP精品文档

相关文档