一、程序的编译链接
一个源代码要成为一个可执行程序,需要经过编译器的编译、链接。
在Linux中的编译器主要有两种:gcc 、 g++ ;gcc主要用于编译C代码;g++用于编译C++代码。
那如何查看编译的三个小过程呢?
预处理:
通过上图,可以看到生成了一个.i文件;命令:gcc -E test.c -o test.i
解释:gcc 表示用gcc编译器编译 ; -E 是表示将源文件在预处理完成后便停止;-o 用来确定输出文件名称的
预处理完成后保存到 test.i中。
编译:
命令:gcc -S test.i -o test.s
解释:-S 表示进行到“编译”完成后就结束,
汇编:
命令:gcc -c test.s -o test.o
解释:-c 表示进行到汇编完成后就结束,
这三个过程中的ESc可以通过键盘的退出键“Esc”进行联想记忆,但需注意大小写问题。
在写代码的时候往往要用到各种库函数;那么要使用这些库函数,便需要链接这些库。
二、gcc中的链接
在写代码的时候往往要用到各种库函数;那么要使用这些库函数,便需要链接这些库。
库可以分为:动态库、静态库
动态库:资源的利用率高,但程序的执行需要依赖第三方库 (.a)
静态库:程序不依赖任何第三方库; 可移植性好,但太占资源 ( .so )
那么gcc编译程序时用的是哪种链接库?
查看文件所链接的库:
命令: ldd 可执行文件
例如: