程序翻译的过程
gcc只能用来编译c,g++可以编译c也可以编译c++
下载g++编译器 sudo yum install -y gcc-c++
gcc file.c -o file 即可完成编译 记得-o后面跟着编译形成的可执行程序名即可
-E选项:从现在开始进行程序的翻译,如果预处理完成,就停下来!
gcc -E file1.c : 将预编译完成后的内容打印到屏幕上 后面+ -o file.i 则是将预编译后的内容存到文件i里面
-S:从现在开始进行程序的翻译,如果编译完成,就停下来
用法同-E,可以从预编译后的文件直接开始翻译形成.s文件
-c:从现在开始进行程序的翻译,如果汇编完成,就停下来
gcc -c file1.i -o file1.o ** 形成的file1.o为可重定向目标文件**但这个文件不可被执行,还差链接过程
eg : gcc file1.o -o file1
动静态库 —— 感性的理解
ldd :查看可执行程序依赖的库
file:可查看链接方式
windows:静态库 .lib 动态库 .dll
linux:静态库 .a 动态库 .so
一般链接有两种方式:
动态链接——需要动态库
静态链接——需要静态库
C头文件在/usr/include 目录下(头文件提供C语言的方法声明)
C库文件在/lib64 目录下(库文件提供C语言的方法实现)
头文件+库文件 链接上我的源文件 ——》exe可执行文件
动态链接
将库中我要的方法的地址,填入我的可执行程序中,建立关联 (节省资源,依赖库)
静态链接
将库中方法的实现,直接拷贝到我们的可执行程序中 (占用资源,不依赖库)
gcc、g++默认使用动态链接
静态链接指令:gcc test.c -o test -static
动态链接必须使用.so动态库文件
静态库必须使用.a静态库文件
你的机器可能因为没有静态库,而导致链接失败
sudo yum install -y glibc-static #下载C静态库
sudo yum install -y libstdc+±static #下载C++静态库