Contents
  1. 1. Linux GCC 常用命令

Linux GCC 常用命令

GCC的意思是GNU Compiler Collection,是GNU编译器家族的意思。

  • 简单编译
1
2
3
4
5
6
#include<stdio.h>
int main(void)
{
printf("hello world\n");
return 0;
}

这个程序,一步到位的编译指令为:
gcc test.c -o test

  • 实质上,上述的编译的过程是分四个阶段进行的,即预处理(也称预编译,Preprocessing),编译(Compilation),汇编(Assembly),链接(Linking)。

    • 预处理(Preprocessing)
      gcc -E test.c -o test.i 或 gcc -E test.c
    • 编译为汇编代码(Compilation)
      gcc -S test.i -o test.s
      gcc的-S选项,表示程序编译期间,生成汇编代码后停止。
    • 汇编(Assembly)
      gcc -c test.s -o test.o
      对于上一节生成的汇编代码test.s,gas汇编器负责将其编译成目标文件。
    • 链接(Linking)
      gcc test.o -o test
      gcc连接器是gas提供的,负责将程序的目标文件与所需的所有附加的目标文件连接起来,最终生成可执行文件。附加的目标文件包括静态连接库和动态连接库。
  • 库文件连接
    例如我们的程序test.c是在linux上使用c连接mysql,这个时候我们需要去mysql官网下载MySQL Connectors的C库,下载下来解压之后,有一个include文件夹,里面包含mysql connectors的头文件,还有一个lib文件夹,里面包含二进制so文件libmysqlclient.so

    其中inclulde文件夹的路径是/usr/dev/mysql/include,lib文件夹是/usr/dev/mysql/lib

    • 编译可执行文件
      首先我们要进行test.c为目标文件,这个时候需要
      `gcc -I /usr/dev/mysql/include test.c -o test.o

    • 链接
      gcc -L /usr/dev/mysql/lib -lmysqlclient test.o -o test

    • -static强制链接的时候使用静态库

  • 检错

    • -Wall 可以是gcc产生尽可能多的警告信息
      gcc -Wall illcode.c -o illcode
    • -Werror 在编译程序时带上-Werror选项,那么GCC会在所有产生警告的地方停止编译,迫使程序员对自己的代码进行修改.
      gcc -Werror test.c -o test
Contents
  1. 1. Linux GCC 常用命令