linux 交叉编译 makefile,简单谈谈Makefile和交叉编译工具链
先来简单谈谈生成一个可执行文件所需要的过程
预处理(preprocessing)->编译(compilation)->汇编(assembly)->连接(linking)
编译:.c->.s 汇编:.s->.o 连接:多个.o合并成一个可执行文件。
在平常通过将上述四步统称为“编译”
接下来通过两个简单的例子来简单分析Makefile
Makefile三大组成:目标、依赖、命令
一
Makefile命令能被执行条件。
目标不存在 (对应下面没有hello这个文件)
依赖已更新 (对应下面hello.c或a.c修改了)
如linux内核中那么多文件,修改某个重新编译某个,重新连接所有!
hello:hello.c a.c
gcc -o hello.c a.c
二
实际在裸机开发的运用
led_on.bin : led_on.S
arm-linux-gcc -g -c -o led_on.o led_on.S #-g:加入调试信息 -c只编译不连接
arm-linux-ld -Ttext 0x0000000 -g led_on.o -o led_on_elf #-Ttext 0x0000000:指定代码段地址0.
arm-linux-objcopy -O binary -S led_on_elf led_on.bin #-O:使用指定格式来输出文件
# binary:二进制的 -S:不从源文件复制重定位信息和符号信息到目标文件中去
clean:
rm -f led_on.bin led_on_elf *.o
arm-linux-gcc -g -c -o led_on.o led_on.S 因为加了-c选项,做了前三个步骤,预处理、编译、汇编源文件,但是不作连接。
arm-linux-ld -Ttext 0x0000000 -g led_on.o -o led_on_elf 将前三个步骤生成的.o文件连接成ELF可执行文件
arm-linux-objcopy -O binary -S led_on_elf led_on.bin 将可在linux执行的ELF文件复制成能在开发板执行的文件
补充常用的概念
$^–所有的依赖文件。$@–目标文件。$
hello:hello.o a.o
gcc -o hello hello.o a.o
hello.o:hello.c
gcc -o hello.o -c hello.c
a.o:a.c
gcc -o a.o -c a.c
上面经过简写如下:
hello:hello.o a.o
gcc -o $@ $^
%.o:%.c
gcc -o $@ -c $^
linux 交叉编译 makefile,简单谈谈Makefile和交叉编译工具链相关推荐
- 关于linux模块驱动简单的Makefile
( 转)嵌入式Linux驱动开发笔记 Linux驱动一般以模块module的形式来加载,首先需要把驱动编译成模块的形式.简单的例子, Begin of hello.c file #include &l ...
- linux 一个超简单的makefile
2019独角兽企业重金招聘Python工程师标准>>> makefile 自动化变量: $@ : 规则的目标文件名 例如:main:main.o test.o g++ -Wall - ...
- LINUX下的简单方便的电子相册制作工具VideoParama,可替代会声会汇制作简单的电子相册
UBUNTU 直接使用指令安装: sudo apt-get install videoporama 其他版本的LINUX的可以到官网下载源码编译,WINDOWS则可直接下载EXE文件安装: 官网:ht ...
- linux下VScode开发ESP32,VsCode设置ESP32工具链+刨根问底点灯
unplash 今天教大家ESP32在vscode上面的配置,以及点灯时的具体引脚定义. 已下软件都是要提前准备的,还有Python环境,不低于3.6 https://cmake.org/ 首先下载c ...
- 树莓派学习笔记——交叉编译工具链
0.前言 [1]为什么要使用交叉编译 交叉编译工具较快开发的速度.树莓派中已经安装了gcc工具链,可在树莓派中直接编译源代码生成可执行文件.于此同时,PC机上也可使用gcc工具链生成可执行代码 ...
- Linux 运维必备的 13 款实用工具,拿好了
本文介绍几款 Linux 运维比较实用的工具,希望对 Linux 运维人员有所帮助. 1. 查看进程占用带宽情况 - Nethogs Nethogs 是一个终端下的网络流量监控工具可以直观的显示每个进 ...
- linux top交叉编译_简单搭建MIPS交叉编译环境——新手推荐 | 学步园
去如下网站下载一个工具包就OK了,o(∩_∩)o...哈哈,过程很简单了 下载一个buildroot,这是个工具集,接下来所要做的事情就是把gcc.binutils等文件下载下来,放在buildroo ...
- mac linux makefile,Makefile简单入门
最近工作编译程序一直在用别人写的Makefile,但是没有系统的学习过,趁着放假学一波 makefile 0x00 Makefile 概述 一个企业级项目,通常会有很多源文件,有时也会按功能.类型.模 ...
- 【Linux系统编程学习】 Makefile简单入门
此为牛客网Linux C++课程1.10&1.11&1.12 的课程笔记. 0. Makefile介绍 1. Makefile文件命名与规则 示例: 使用vim编写如下名为Makefi ...
- Linux ARM交叉编译工具链制作过程
一.下载源文件 源代码文件及其版本与下载地址: Binutils-2.19.tar.bz2 http://ftp.gnu.org/gnu/binutils/ gcc-4.4.4.tar.bz2 htt ...
最新文章
- win7系统下配置openCV python环境附加 numpy +scipy安装
- LF AI Day中国站火热报名中
- 加载checkpoint问题
- Springboot里输出的html里包含script标签页会怎样
- linux nuttx 环境搭建,ubuntu14.04 nuttx开发环境的搭建
- Listview的OnScrollListener的滑动监听实现分页加载
- IPv4和IPv6有什么不同
- 年报掘金:机构增仓路线图曝光(2010-03-06转载)
- 2017年BackBox5和Ubuntu16.04.1国内更新源
- 人生感悟:生活磨练有时也是一种财富
- Android中ListView复用导致布局错乱的解决方案
- ADPCM 音频压缩算法
- 谈谈如何做到从未来看向当代的能源技术
- 坐标方位角计算通用公式
- 计算机取证(Windows)FTK+X-Way取证复制
- Slumdog Millionaire--《贫民窟的百万富翁》
- 齐岳2-苯基吡啶(C-N)|2-phenylpyridine|cas1008-89-5
- WordPress安装详细教程(小白教程)
- Neurodevelopment of the association cortices: Patterns, mechanisms:综述——联合皮层神经发育的模式和对精神病学的启发
- 八种炫酷纯CSS加载动画代码
热门文章
- NetBIOS和NBNS
- 1.2 安装与卸载Visual Studio 2018
- php共生模式,phpwamp单身狗模式的详解与分析,单身狗模式/即霸体模式的作用讲解。...
- php网页顶端有乱码,四个常见html网页乱码问题及解决办法
- python爬虫课程大纲_马哥2018python全栈+爬虫+高端自动化课程大纲
- Linux 基础知识
- 2006年度中国管理软件行业评选
- 数据库性能优化面试题,全网最新
- FreeSWITCH(二) - 安装部署、试用
- C# 填充Excel