IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> ARM GCC常见用法 -> 正文阅读

[嵌入式]ARM GCC常见用法

ARM GCC常见用法

GCC是GNU的编译器套件(GNU Compiler Collection),在执行编译工作是,需要一下4步:

  • 预处理器将源文件预处理后变为 .i 的文件
  • 编译器将预处理后的 .i 文件转换成汇编文件( .s文件)
  • 汇编器将汇编文件转换为可重定位的目标文件( .o文件 )
  • 链接器将各个可重定位的目标文件链接生成为可执行的目标文件( .elf 文件)

参数介绍

  • -S

只激活预处理器和编译器,将源文件编译成汇编代码

  • -c

只激活预处理器,编译器和汇编器,将源文件变为可重定位的目标文件

  • -o

指定输出文件的名字,GCC默认编译出的文件名为a.out

  • -include filename

包含其它文件,相当于在代码中使用 #include <filename>

  • -M

生成文件关联信息

  • -llibary

指定编译时使用的库,例 gcc -lcurses hello.c

  • -Ldir

指定编译时,搜索库的路径,不然仅在标准库的目录里找,dir即目录名称

  • -O0,-O1,-O2,-O3

编译器优化的4个级别

  • -g

指定编译器在编译时产生调试信息

  • -static

禁止使用动态库

  • -share

尽量使用动态库,生成出的文件更小,但须要对应系统具有动态库

使用举例

  • 对源文件仅进行预处理操作
arm-none-eabi-gcc -E main.c -o main.i
  • 将源文件编译成汇编代码
arm-none-eabi-gcc -march=armv7-m -S main.c -o main.s
  • 将源文件编译成可重定位的目标文件
arm-none-eabi-gcc -march=armv7-m -c main.c -o main.o
  • 将源文件编译成可执行的目标文件(.elf)
arm-none-eabi-gcc -march=armv7-m -specs=nosys.specs main.c -o main
  • 将汇编代码编译成可执行的目标文件(.elf)
arm-none-eabi-as -march=armv7-m main.s -o main
  • 由可执行的目标文件(.elf)生成反汇编代码(.dis)
arm-none-eabi-objdump -d main > main.dis
  • 多个可重载目标文件生成可执行目标文件
arm-none-eabi-ld -T script.ld test1.o test2.o -o test   //其中script.ld为链接脚本
  • 多个可重载目标文件生成map文件
arm-none-eabi-ld -T script.ld test1.o test2.o -Map test.map
  • 读取可执行目标文件(.elf)中的程序bin文件
arm-none-eabi-objcopy -O binary test.elf test.bin
  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-12-26 22:21:45  更:2021-12-26 22:23:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 12:44:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码