下载此文档

第0讲 GCC和GDB.ppt


文档分类:IT计算机 | 页数:约30页 举报非法文档有奖
1/30
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/30 下载此文档
文档列表 文档介绍
Linux程序编译及调试
李杰聪 lijiecong@
程序编译过程
从程序员角度,编译源代码可以分为三个阶段。预处理源代码(宏展开),生成机器指令(*.o),链接(*.a *.so)
gcc/g++概述
GCC: piler Collection
gcc/g++都可以编译C或者C++代码。
,g++都认为是C++源文件。
gcc严格按照后缀来区分源文件。.c是c代码,.cpp是c++代码。
gcc不能自动链接C++库。(需要选项-lstdc++ )
一般情况下,编译c代码,g++编译c++代码。
gcc入门
,通过以下几个步骤编译成最终可执行文件。
gcc -c 。
gcc –o main 生成可执行文件
./main 运行可执行文件
gcc –o main 一步生成可执行文件。
gcc常用编译选项
-c:编译或汇编源文件,。缺省情况下, GCC通过用’.o‘替换源文件名后缀’.c’,产生目标文件名。可以使用-o选项选择其他名字。连接器可把一个或多个’.o’链接撑最终的可执行文件。
范例:
gcc –c -o
gcc常用编译选项
-S:大S。编译后即停止,不进行链接。输出汇编语言文件。
范例:把c代码编译成汇编代码。
gcc –S –o
-D: 宏定义选项,等同于代码中的#define MACRO 但-D定义的宏作用于所有的源文件。
范例: 宏选项的作用。
gcc -DTEST
gcc
gcc常用编译选项
-I 头文件的搜索路径。的搜索路径中,可以用此选项指定额外搜索路径。
-Wall 打开所有警告。
-Werror 把警告当做错误,必须与-Wall配合使用。
-w 关闭所有警告。
-g 加入调试信息。(可执行文件体积增大,运行速度变慢)
gcc常用编译选项
-O 或者–O1 优化选项
-O2 一般使用2级优化。
-O3 乱序执行,循环展开的优化。
gdb调试时不能用优化选项,否则变量值和源代码无法对应。
外部库的使用
库使用方式
优点
缺点
静态链接库(*.a)
在程序链接时,就把第三方的库文件链接进可执行文件。
不依赖于具体执行环境。
编译速度慢,可执行文件占用空间大,运行时耗内存。
动态链接库(*.so)
程序链接时,只把依赖的动态链接库的库名放入可执行文件中
编译速度快,编译后的执行文件占用空间小,省内存。
依赖于具体执行环境是否有程序使用的第三方库。
动态装载外部库(*.so)
链接时什么都不做。程序运行时,调用dlopen,dlsym来动态的调用第三方库中的代码。
需要时在装载,省内存。
依赖于具体执行环境是否有程序使用的第三方库。
静态库编译和使用
把‘.c’编译成‘.o’
gcc –c –o
把‘.o’归档成静态库‘.a’
ar –r
静态库和其它源文件链接成可执行文件
gcc –o main
执行main即可得到结果
-static 使用静态库链接。编译后的文件体积较大。
gcc –o main –static
(用ldd观察静态链接和动态链接的区别)

第0讲 GCC和GDB 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数30
  • 收藏数0 收藏
  • 顶次数0
  • 上传人xunlai783
  • 文件大小1.20 MB
  • 时间2018-01-05