gcc学习总结
- 程序编译的步骤
- gcc和g++的区别
- gcc和g++编译C++
- gcc 正常编译、静态库、动态库
程序编译的步骤
- 预处理 gcc -E hello.c -o hello.i
- 编译,生成汇编码 gcc -S helll.i -o hello.s
- 汇编,生成目标文件(.o文件) gcc -c hello.s -o hello.o
- 链接 gcc hello.o -o hello 当所有的目标文件都生成之后,gcc就调用ld来完成最后的关键性工作,这个阶段就是链接。在这个阶段,所有的目标文件被安排在可执行程序中的恰当的位置,同时,该程序所调用到底库函数也从各自所在的档案库中连到合适的地方。
- gcc编译选项
-c 只编译,不连接成为可执行文件
静态库和动态库
- 静态库 静态库是指编译链接时,把库文件中的代码全部加入到可执行文件中,因此生成的文件比较大,但在运行时也就不在需要库文件了。其后缀名一般为“.a”。
- 动态链接库 动态链接库,在编译链接时并没有把库文件的代码加入到可执行文件中,而是在程序执行时链接文件加载库,这样可以节省系统的开销。动态库一般后缀为”.so”
- 库的默认搜索路径为“/usr/lib”,那么如何使用编译选项指定库文件目录?
1、gcc和g++的区别?
gcc和g++的区别主要实在对cpp文件的编译和链接过程中,因为cpp和c文件中库文件的命令方式不同,那么为什么g++既可以编译C有可以编译C++,这是因为g++在内部做了处理,默认编译C++程序,但如果遇到C程序,它会直接调用gcc去编译。