嵌入式学习gcc

gcc

gcc编译器,将C/C++代码编译成二进制的可执行文件。gcc编译过程可以简单分为,预处理,编译,汇编,链接。在这4个过程中会产生若干中中间文件。

.c(C源文件) .C .cc .cxx(C++源文件)// 源代码文件 --预处理-->
.i (对应.c) .ii(.C .cc .cxx) // ----汇编--->
.s // ----预编译---->
.S // ----编译----->
.o // -----链接---->
.a .so 可执行文件 

gcc 通过文件后缀识别文件类型

gcc使用

gcc编译选项非常多根本记不住,所以只要记住常用的就好了。需要用的时候在去查。

基本用法

gcc [option] [filenames]
option:编译器所要的编译选项
filenames:要编译的文件名

-o output_filename

作用是指定输出文件名(可执行文件),如果不指定输出文件名就会输出默认文件名a.out。
嵌入式学习gcc_第1张图片
嵌入式学习gcc_第2张图片

-c

只编译,不链接,即不生成可执行文件。编译器最终输出文件是.o文件,目标文件。
嵌入式学习gcc_第3张图片

-g

生成调试有关的符号信息。如果要使用gdb调试就必须添加这个选项。调试信息会使程序体积变大,运行变慢。这里写图片描述

-O

对程序进行优化。

-O2

对程序进一步优化。

-I dirname

将dirname所指出的目录加入到程序头文件目录列表中。
C程序头文件包含有两种形式

  • #include <>
  • #include “”
    对于<>,预处理程序cpp在系统预设头文件目录中(如/usr/include)中搜索相应文件。而对于“”,cpp在当前目录中搜寻头文件。这个选项是告诉cpp,如果在当前目录中没有找到需要的文件,就到指定的dirname目录中去寻找。

-L dirname

将dirname所指出的目录加入库文件中的目录列表中。在默认状态下,链接程序ld在系统的预设路径中/usr/lib寻找所需的库文件,这个选项告诉链接程序,首先到-L指定的目录中去寻找,然后在到系统的预设路径中寻找。

-l name

在链接的时候装载名字为 libname.a的函数库,该函数库位于系统预设目录或者由-L选项确定目录下。例如,-lm表示链接名为libm.a的数学函数库。

-static

静态链接程序。

-Wall

生成所有警告信息

-w

不生成任何警告信息

-DMACRO

定义预编译宏

你可能感兴趣的:(kali,linux)