最近刚开始接触Linux C++,发现其与windows C++有太大的差别。这里是自己的一些总结,如果有新人看到,希望能够帮到您。
1、gcc编译器简介
生成一个.out需要将源文件依次进行预处理、编译、汇编、链接,并最终生成可执行文件。下面将对各步进行具体的说明:
预处理(Pre-Processing):根据预处理命令(#开头)修改源文件# gcc -o hello.i -E hello.c;
编译(Compiling):语法检查,并将源文件翻译成汇编文件# gcc -o hello.s -S hello.i;
汇编(Assembling):将汇编文件转换为目标文件(二进制)# gcc -o hello.o -c hello.s;
链接(Linking):编址和符号链接,生成可执行文件# gcc -o hello hello.o。
注意:1)这里的语法均只列举最常规的形式;2)在进行gcc命令时,如果您使用的是C++的库建议使用g++命令;3)“-o“只是指明源文件经过操作后生成的目标文件名以及其文件格式,并不属于编译操作可以将其放到命令的末尾,在读命令先读gcc或者g++,然后跳过-o以及后面的目标文件接着读后面的指令,最后再读-o及其后面的目标文件这样就会容易理解。
2、makefile
关于makefile这里只对其文件格式和容易理解错的地方进行说明:
文件格式示例为{
edit: main.o A.o
[Tab]g++ -o edit main.o A.o
main.o: A.h
[Tab]gcc -c main.cpp
A.o: A.h
[Tab]gcc -c A.cpp
clear:
[Tab]rm edit main.o A.o}
注意:1)edit是指最终的目标文件名;2)命令行的开头一定要用[Tab]进行开头;3)依赖文件只写windows下每个源文件#include中的文件即可,不必包含源文件即.cpp文件;4)编译器(例如:g++ or gcc or cc)的选择一定要正确,其中g++支持c和c++,而gcc、cc仅支持c。