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

来源:互联网 发布:手机天网视频软件 编辑:程序博客网 时间:2024/06/05 21:56

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<stdio.h>    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

这里写图片描述
就能进入 GCC的介绍页面,哪里不会看哪里。
介绍一下搜索:

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

三、了解编译过程

1、编写程序

vim 1.c //首先利用vim 编写一个hello world的程序
#include <stdio.h>int main (){printf("hello world");return 0;}
:wq   //保存退出

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

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

然后产看一下 1.i的内容
这里写图片描述
这里写图片描述

3、编译

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

查看一下1.s文件,内容均为汇编语言
这里写图片描述
再次查看一下文件的大小
这里写图片描述

4、生成目标文件

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

查看一下1.o的内容
这里写图片描述
然后再看一下文件的大小
这里写图片描述

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

这里写图片描述

5、链接

gcc 1.o -o build

这里写图片描述

最后完成链接,运行程序屏幕就出现了 “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
1 0