使用GNU toolchain时,如何才能不链接标准库?
来源:互联网 发布:光速网络网站 编辑:程序博客网 时间:2024/05/29 07:30
mini_loader.S
1. arm-elf-gcc -Os -c -o loader.o loader.S
2. arm-elf-ld -nostdlib -Bstatic -Ttext 0xff800000 -o loader -Map mini_loader.map loader.o
3. arm-elf-objcopy -O srec loader loader.srec # 生成motorola Srecord
4. arm-elf-objcopy -O binary loader loader.bin # 生成 binary
重点在第二行。参考一下手册获得详细解释,大致意思是程序入口点为 0xff800000,静态链接,不使用标准库。
由于代码的执行不依赖操作系统,因此不能直接运行 elf 文件,而应该直接跳到代码的入口点运行(0xff800000),
第就是第3、4行的作用,根据需要生成 srec 或bin,没有必要都生成。
下面有一个用于复制代码的示例:
功能:从ROM中运行,加电后首先得到执行,然后将一些代码复制到内存中(忽略内存初始化部份),然后跳到
某入口点执行代码(只是示例,不是上面提到的代码哈)。
==================================================
.globl _start
_start:
ldr r0,=SOURCE_ADDR
ldr r1,=TARGET_BASE
ldr r2,=SOURCE_END
copy_loop:
ldmia r0!, {r3-r10}
stmia r1!, {r3-r10}
cmp r0, r2
ble copy_loop
mov r0, #91
mov r1, #0
ldr pc, =RUN_FROM_HERE
==================================================
如果要了解更多一点的东东,可以参考一下嵌入式系统常用的loader,如ppcboot,armboot、redboot等。
1. arm-elf-gcc -Os -c -o loader.o loader.S
2. arm-elf-ld -nostdlib -Bstatic -Ttext 0xff800000 -o loader -Map mini_loader.map loader.o
3. arm-elf-objcopy -O srec loader loader.srec # 生成motorola Srecord
4. arm-elf-objcopy -O binary loader loader.bin # 生成 binary
重点在第二行。参考一下手册获得详细解释,大致意思是程序入口点为 0xff800000,静态链接,不使用标准库。
由于代码的执行不依赖操作系统,因此不能直接运行 elf 文件,而应该直接跳到代码的入口点运行(0xff800000),
第就是第3、4行的作用,根据需要生成 srec 或bin,没有必要都生成。
下面有一个用于复制代码的示例:
功能:从ROM中运行,加电后首先得到执行,然后将一些代码复制到内存中(忽略内存初始化部份),然后跳到
某入口点执行代码(只是示例,不是上面提到的代码哈)。
==================================================
.globl _start
_start:
ldr r0,=SOURCE_ADDR
ldr r1,=TARGET_BASE
ldr r2,=SOURCE_END
copy_loop:
ldmia r0!, {r3-r10}
stmia r1!, {r3-r10}
cmp r0, r2
ble copy_loop
mov r0, #91
mov r1, #0
ldr pc, =RUN_FROM_HERE
==================================================
如果要了解更多一点的东东,可以参考一下嵌入式系统常用的loader,如ppcboot,armboot、redboot等。
- 使用GNU toolchain时,如何才能不链接标准库?
- GNU toolchain
- Linux 下 GNU Toolchain 的使用
- GNU ToolChain ----GCC
- GNU ARM Embedded Toolchain
- 让vs2008支持GNU ToolChain
- GNU工具链(GNU toolchain)
- 【原创】Cygwin下使用GNU toolchain进行ARM的开发调试
- [学习笔记]使用GNU Toolchain在STM32上跑起一个最小OS
- 如何才能实现在点击链接时直接在网页中打开word文档,但不提示保存
- GNU LD链接器的使用
- GNU LD链接器的使用
- No0 开发工具 - GNU Toolchain,MSVC
- GNU toolchain for ARM targe HOWTO
- 编译GNU toolchain for ARM 笔记
- GNU toolchain —— (一)介绍
- 开始加入gnu toolchain的开发
- Ubtuntu 14.04 安装GNU ARM Embedded Toolchain
- 有关浮点数的存储 比较
- linux下如何合并多个pdf文件
- "五彩缤纷"的终端
- 花边下随笔
- 关于二维数组
- 使用GNU toolchain时,如何才能不链接标准库?
- uclinux编译笔记
- 生日礼物-大功告成
- 降权,使用admin的权限
- 贪必寡,疑必失
- 自动下载编译所需的库文件
- 如何编译安装cvs版本的emacs(打开gtk和xft支持)
- c语言笔试题
- 源程序-删除c源文件中的注释