在ubuntu环境下对C/C++进行编译首先保证ubuntu系统中包含编译工具(g++/gcc)和编辑工具(vim),C语言和C++对应的编译器分别为gcc,g++。
如果缺少上述的相关应用,则需要先执行如下命令:
sudo apt-get install build-essential
sudo apt install vim
sudo apt-get install gcc
sudo apt-get install g++
C语言的运行
首先写一段简单的hello world程序,命名为hello.c,则先输入如下命令:
vim hello.c
然后输入如下代码:
#include<stdio.h>
int main(){
printf("hello world\n");
return 0;
}
保存并退出。 之后执行
gcc -o hello hello.c
上述命令会生成一个名为hello 的可执行文件,之后输入./hello 即可得到如下运行结果:
C++的运行
同样写一段简单的hello world程序,命名为hello.cpp,则先输入如下命令:
vim hello.cpp
然后输入如下代码:
#include<iostream>
using namespace std;
int main(){
cout << "hello world" << endl;
return 0;
}
保存并退出。 之后执行
g++ -o hhh hello.cpp
上述命令会生成一个名为hhh 的可执行文件,之后输入./hhh 即可得到如下运行结果:
gcc/g++手动模拟详细过程
这里以gcc编译执行c语言为例(g++类似)。
预处理
#号开头的代码全被解决掉(预编译,包含库,宏定义等等),产生一个后缀.i的文件以便下一步使用。 执行如下命令,将预处理的结果重定向到hello.i 文件中:
gcc -E hello.c >> hello.i
编译
这一步主要检查语法错误。产生一个后缀.s的文件(汇编文件)。 执行如下命令,自动产生一个hello.s 文件
gcc -S hello.i
汇编
产生后缀.o 的object目标文件,二进制,但不可以运行,因为缺少库信息。
gcc -c hello.s
链接
添加库信息,产生最终的可执行文件并命名为hello 。
gcc hello.o -o hello
如此我们便得到了最终的可执行文件。
|