编译工具
来源:互联网 发布:抓包软件 编辑:程序博客网 时间:2024/06/04 23:33
1. 交叉工具链:
交叉工具的集合,交叉编译工具是在A机器上编译生成,运行在B机器上的工具。而工具链则是由编译器、连接器、解释器和调试器组成的。
arm-linux-gcc 用于arm平台的交叉编译器arm-linux-ld 用于arm平台的交叉链接器
arm-linux-readelf 显示文件的详细信息-包含储大小端、 运行平台以及对库函数的要求(file命令也可以检查运行平台,不过是简略信息)
arm-linux-objdump 用于arm平台的反汇编器
arm-linux-objcopy 用于arm的文件汇编转换器
2. 连接器脚本
对程序的产生有至关重要的作用。其中第一个作用:将若干输入问件(.o文件)根据一定的规则合并为一个文件。另一个作用是将符号与地址绑定。其中-T参数用于指定自定义的脚本文件。一个可执行程序通常由:代码段、数据段、bbs段构成,连接器脚本也是如此。在设置起始地址,存储位置时希望能够保持4字节对齐方式,这样读取效率才够高(通过. = ALIGN(4)使保持四字节对齐)。计算地址长度,可以通过首地址与尾地址相减得到(例bbs_start与bbs_end)。想要指明文件运行顺序,可以通过设置代码段首文件来实现。SECTIONS{
. = 0x20000000 ;
. = ALIGN(4) ;
.text :
{
*(.text)
}
. = ALIGN(4);
.data :
{
*(.data)
}
. = ALIGN(4);
bss_start = . ;
.bss :
{
*(.bss)
}
bss_end = . ;
}
3. Makefile:
规则:targets(目标):prerequisites(依赖)command(命令,前面加TAB键)
【注】:伪目标是表示没有依赖,只有目标的规则
最终目标是make命令加上目标的名字表示最终目标是那个,如果make后没加任何东西表示最终目标是第一条规则的目标。
变量:重复出现的一段可以通过设置为一个变量进行替换
例:obj=func1.o func2.o
app1:app1.o $(obj)等价于app1:app1.o func1.o func2.o
系统变量:系统定义好的,可以直接使用的变量
$^ : 代表所有的依赖文件
$@ : 代表目标
$<:代表第一个依赖文件
通用规则:当出现多条规则执行命令一样,依赖文件个数一样,仅仅依赖文件后缀不同时,我们可以省略文件名,用%表示,例:
%.o : %.S
arm-linux-gcc -g -o $@ $< -c
%.o : %.c
arm-linux-gcc -g -o $@ $< -c
【注】:在某个命令前加上@可以去掉该命令的回显;Makefile重命名通过make -f 重命名后的名字 方式重命名。
0 0
- 编译工具
- 编译工具
- 编译工具
- 编译工具
- 编译工具
- 开发工具 编译工具介绍
- DXperience demo编译工具
- Torque的编译工具
- 交叉编译工具
- 几个自动编译工具
- 安装交叉编译工具
- 安装交叉编译工具
- 编译yaffs文件工具
- .NET 编译工具
- 安装交叉编译工具
- GNU编译工具
- 编译mini2440工具链
- mysql编译工具 cmake
- 详解Android Touch事件的传递机制
- ubuntu下安装c++检测工具perf
- Codeforces 303A 构造+数论
- DateTimePicker
- 全参考客观视频质量评价方法 (MSE, PSNR,SSIM)原理
- 编译工具
- 回溯法在排列组合问题中的应用
- mkv210_image.c
- HAProxy+Keepalived配置邮件报警,会话保存机制和TCP端口范围(三)
- scoket客户端扫描电脑可用端口小demo
- pat-a1090. Highest Price in Supply Chain (25)
- Sping框架概述
- 数据库系统常用的存取方法
- sed、awk