在 Windows 下编程首先就是安装对应的 IDE ,然后在 IDE 里面进行代码编写和编译,但是在 Linux 下,这两个部分是分开的,比如我们可以使用 vim 编辑器编写代码,然后用 gcc 编译器编译代码。Ubuntu 下有一些可以进行编程的工具,但大多只是编辑器,只能进行代码编辑,要想编译的话就需要用到 gcc 编译器。
设置 vim 编辑器
sudo vi /etc/vim/vimrc
默认 TAB 键为8个空格,设置 TAB 键为4个空格;
set ts=4
默认不显示行号,设置其显示行号;
set nu
编写 C 程序
编译 C 程序
gcc 编译工具在安装 Ubuntu 的时候就已经安装好了;
gcc 命令
gcc [选项] [文件名字]
-c 只编译不链接为可执行文件,编译器将输入的.c 文件编译为.o 的目标文件;
-o <输出文件名> 用来指定编译结束以后的输出文件名,默认编译出来的可执行文件名字为 a.out;
-g 添加调试信息,如果要使用调试工具(如 GDB)的话就必须加入此选项,此选项指示编译的时候生成调试所需的符号信息;
-O 对整个源代码编译、链接的的时候进行优化,这样产生的可执行文件执行效率就高;
-O2 比 -O 更幅度更大的优化,生成的可执行效率更高,但是整个编译过程会很慢;
编译错误警告
故意制造一些错误,看编译出来是什么效果;
改正错误,添加对 a、b 的定义;并补上在“ b = 4 ”后面缺少的分号,再次编译;
错误没有了,只是出现一个警告,是可以运行的,但是并没有输出 a + b 结果;
现在把它修改正确后再次编译;
可以看出,gcc 编译器在编译的时候,可以检查出错误和警告,并提示在哪一行,定位具体位置,方便去修改。
gcc 编译器的编译流程是: 预处理、汇编、编译、链接。
预处理就是对程序中的宏定义等相关的内容先进行前期的处理;汇编是先将 C 文件转换为汇编文件,当 C 文件转换为汇编文件以后就是文件编译了;编译就是将 C 源文件编译成 .o 结尾的目标文件;编译生成的 .o 文件不能直接执行,还需要最后的链接,如果你的工程有很多个 C 源文件的话最终就会有很多 .o 文件,将这些 .o 文件链接在一起形成完整的一个可执行文件。示例的文件简单,因此可以直接使用 gcc 命令生成可执行文件,并没有先将 C 文件编译成 .o 文件,然后再链接在一起。