gcc学习总结

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去编译。