嵌入式(十一)

您所在的位置:网站首页 gcc编译带符号表 嵌入式(十一)

嵌入式(十一)

2023-02-26 04:43| 来源: 网络整理| 查看: 265

文章目录 编译器gcc1.1 gcc概述1.2 什么是交叉编译1.3 源文件到可执行经历步骤1.4 编译选项 附

编译器gcc 1.1 gcc概述

GNU计划提供编译器(unix cc编译器) (编译工具链) --> (交叉编译工具链)

1.2 什么是交叉编译

图解 交叉编译:在宿主机下编程出在目标机下运行的代码的过程 通俗地讲,就是在当前CPU平台下编译出在其他CPU平台运行的代码的过程 Linux上查看编译器:arm-linux-gnueabihf-

1.3 源文件到可执行经历步骤

预处理、编译、汇编、连接(.c -> .s -> .o -> elf)

预处理的任务:头文件展开(#include)、宏替换(#define)、条件编译(#ifdef、#ifndef) (#开头代码)编译的任务:检查语法、转成汇编、生成汇编文件(.s/.S)汇编的任务:编译汇编文件,生成目标文件(.o)链接的任务:链接所有目标文件,生成符号表,生成可执行文件 1.4 编译选项

-o(可执行重命名:elf)

什么是elf格式 一种Linux下常用的可执行文件、对象、共享库的标准文件格式 还有许多其他可执行文件格式: PE、Mach-O、COFF、 COM… ELF中的数据按照Segment和Section两 个概念进行划分

-E:只进行预处理(例:gcc -E hello.c > hello.i) 头文件路径:/usr/include/stdio.h(用vim打开) 与"":搜索路径不同 :在系统文件路径(usr/include)搜索,若没有,则报错 “”:于现在当前目录查找,若没有再到系统头文件目录查找,若没有,就报错 规范:包含系统头文件、""包含自定义文件 .h声明函数文件,.c编写函数文件(如add.h,add.c)则(gcc hello.c add.c -o hello)

如果add.c不在当前目录 -I 指定头文件第三方搜索路径(gcc -I/root/205/1105/test hello.c add.c -o hello) -S (进行编译阶段)(-E是为了检查那些复杂的宏)(gcc -S -I./test hello.c add.c) -c (进行汇编阶段)(gcc -c -I./test hello.c add.c)

-O1 -O2 -O3(编译优化)

一级优化(gcc -O1 optimize.c -o optimize1) 二级优化(gcc -O2 optimize.c -o optimize1) 三级优化(gcc -O3 optimize.c -o optimize1) 编译如何优化的: gcc编译优化-O0 -O1 -O2 -O3 -OS解析

-w (关闭警告warning)禁用 -Wall (全打开warning) 以后程序:gcc -Wall -O3 demo.c -o demo

gcc中>

属性:管道 作用:输出结果重定向 gcc -E hello.c > hello.i

x86复杂指令集、ARM精简指令集 注意:局部变量地址(可加static)



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3