GNU开发笔记--开发环境基础(持续更新)

GCC(GNU C Compiler)是GNU项目中符合 符合ANSI C 标准的编译系统,能够编译调用 C 、C++、object C等语言编写的程序,同时gcc 也是一个交叉编译器,特别适用于不同平台的嵌入式开发。

一、GCC程序编译过程:

源文件.c >(预处理)> 预编译文件.i >(编译)> 汇编文件.s >(汇编)> 目标文件.o >(链接)> 可执行文件

vim abc.c               //用vim创建一个abc.c文件
    /* 在vim下编写程序*/
i                       //进入插入模式

    #include
    int main ()
    {
        printf("hello world \r");
        return 0;

    }

:wq                  // 保存 abc.c文件并退出
gcc -o build abc.c   //gcc abc.c -o build

./build              //执行build文件
gcc支持的后缀名
后缀名 对应的语言
.c C原始程序
.C/.cc/.cxx c++ 原始程序
.m Objective C原始程序(苹果)
.i 已经预处理的C原始程序
.ii 已经预处理的C++原始程序
.s/.S 回避那语言的原始程序
.h 预处理头文件
.o 目标文件
.a/.so 编译后的库文件,静态库和动态库

二、GCC 手册

在实际使用gcc中如果遇到未知的错误,可以产看手册

man gcc

GNU开发笔记--开发环境基础(持续更新)_第1张图片
就能进入 GCC的介绍页面,哪里不会看哪里。
介绍一下搜索:

/ XXXX    //搜索关键字
n         //下一个
N         //上一个
/* 如果查询其他的功能,可以按“h”进入帮助文档*/

三、了解编译过程

1、编写程序

vim 1.c //首先利用vim 编写一个hello world的程序
#include 

int main ()
{

printf("hello world");
return 0;

}
:wq   //保存退出

2、进行预编译(预处理)

gcc -E 1.c -o 1.i //进行预编译

然后产看一下 1.i的内容
GNU开发笔记--开发环境基础(持续更新)_第2张图片
GNU开发笔记--开发环境基础(持续更新)_第3张图片

3、编译

gcc -S 1.i -o 1.s //对1.i文件进行编译生成1.s的汇编文件

查看一下1.s文件,内容均为汇编语言
GNU开发笔记--开发环境基础(持续更新)_第4张图片
再次查看一下文件的大小
GNU开发笔记--开发环境基础(持续更新)_第5张图片

4、生成目标文件

gcc -c 1.c 1.s -o 1.o

查看一下1.o的内容
GNU开发笔记--开发环境基础(持续更新)_第6张图片
然后再看一下文件的大小
GNU开发笔记--开发环境基础(持续更新)_第7张图片

file 1.o //查看一下1.o的文件属性

GNU开发笔记--开发环境基础(持续更新)_第8张图片

5、链接

gcc 1.o -o build

GNU开发笔记--开发环境基础(持续更新)_第9张图片

最后完成链接,运行程序屏幕就出现了 “hello world”

6、调试

gcc -g 1.c -o 2
./2

四、添加头文件

1、指定路径头文件

在abc.c 的中添加一个头文件abc.h,因此需要添加abc.h的路径,这样才能使编译器找到abc.h。需要调用 “-I”

gcc -I. abc.c -o build
//"."表示当前路径
//-I表示指定路径

在当前文件中建立一个inc的文件夹,存放abc.h

gcc -I./inc abc.c -o build

你可能感兴趣的:(Linux学习日志)