📅  最后修改于: 2023-12-03 14:40:41.143000             🧑  作者: Mango
本文将介绍在 Debian 10 系统上使用 gcc 编译程序的基本方法及注意事项。
gcc 是 GNU Compiler Collection,是一款开源的 C、C++、Fortran 等语言的编译器。在 Linux 系统中,gcc 是最常用的编译器之一。本文将通过实例演示如何使用 gcc 编译程序,并提供一些常见编译错误的解决方法。
在本地新建一个文件,在文件中输入以下代码:
#include <stdio.h>
int main() {
printf("Hello world!\n");
return 0;
}
输入以下命令进行编译:
gcc -o hello hello.c
其中,-o 后面跟着的是编译后生成的可执行文件的名称,hello.c 是源文件名。
如果编译无误,会在当前目录下生成一个名为 hello 的文件。执行该文件会输出 "Hello world!"。
/tmp/ccNMeX9F.o: In function `__libc_csu_init':
(.text+0x98): undefined reference to `main'
collect2: error: ld returned 1 exit status
这个错误是由于缺少 main 函数引起的。请检查源文件中是否存在 main 函数。
hello.c:1:10: fatal error: stdio.h: No such file or directory
#include <stdio.h>
^~~~~~~~
compilation terminated.
这个错误是由于缺少头文件引起的。请确保安装了 gcc 的依赖库 libc6-dev:
sudo apt-get install libc6-dev
在本地新建一个文件,在文件中输入以下代码:
#include <iostream>
using namespace std;
int main() {
cout << "Hello world!" << endl;
return 0;
}
输入以下命令进行编译:
g++ -o hello hello.cpp
其中,-o 后面跟着的是编译后生成的可执行文件的名称,hello.cpp 是源文件名。
如果编译无误,会在当前目录下生成一个名为 hello 的文件。执行该文件会输出 "Hello world!"。
undefined reference to `std::cout'
这个错误是由于缺少 iostream 头文件引起的。请确保在源文件中包含 iostream 头文件:
#include <iostream>
hello.cpp:4:5: error: 'namespace' is not allowed as a struct member
4 | using namespace std;
| ^~~~~~
这个错误是由于在结构体成员中使用了 using namespace std; 引起的。请将 using namespace std; 放在 main 函数外面。