1.4 连接器脚本

链接脚本神奇之处

脚本的构成

SECTIONS{

.text:

{

*(.text)

}

.data:

{

*(.data)

}

.bss:

{

*(.bss)

}

}

设置程序链接起始位置

SECTIONS{

. = 0x50000000 #程序起始位置

.text:

{

*(.text)

}

.data:

{

*(.data)

}

.bss:

{

*(.bss)

}

}

对齐设置

SECTIONS{

. = 0x50000000; #程序起始位置

.ALIGN(4);

.text:

{

*(.text)

}

.ALIGN(4)

.data:

{

*(.data)

}

.ALIGN(4)

.bss:

{

*(.bss)

}

}

变量

SECTIONS{

. = 0x50000000; #程序起始位置

.ALIGN(4);

.text:

{

*(.text)

}

.ALIGN(4);

.data:

{

*(.data)

}

.ALIGN(4);

bss_start = .;

.bss:

{

*(.bss)

}

bss_end = .;

}

设置代码段首文件

首先链接的代码

SECTIONS{

. = 0x50000000; #程序起始位置

.ALIGN(4);

.text:

{

start.o(text)

*(.text)

}

.ALIGN(4);

.data:

{

*(.data)

}

.ALIGN(4);

bss_start = .;

.bss:

{

*(.bss)

}

bss_end = .;

}

连接器脚本不同,编译出来的程序效果也不一样

时间: 2024-08-09 04:50:09

1.4 连接器脚本的相关文章

Linux下的lds链接脚本详解【转】

转自:http://www.cnblogs.com/li-hao/p/4107964.html 转载自:http://linux.chinaunix.net/techdoc/beginner/2009/08/12/1129972.shtml 一. 概论 每一个链接过程都由链接脚本(linker script, 一般以lds作为文件的后缀名)控制. 链接脚本主要用于规定如何把输入文件内的section放入输出文件内, 并控制输出文件内各部分在程序地址空间内的布局. 但你也可以用连接命令做一些其他事

Linux下的lds链接脚本详解

1. 概论2. 基本概念3. 脚本格式4. 简单例子5. 简单脚本命令6. 对符号的赋值7. SECTIONS命令8. MEMORY命令9. PHDRS命令10. VERSION命令11. 脚本内的表达式12. 暗含的连接脚本 1. 概论 每一个链接过程都由链接脚本(linker script, 一般以lds作为文件的后缀名)控制. 链接脚本主要用于规定如何把输入文件内的section放入输出文件内, 并控制输出文件内各部分在程序地址空间内的布局. 但你也可以用连接命令做一些其他事情. 连接器有

嵌入式 uboot引导kernel,kernel引导fs【转】

转自:http://www.cnblogs.com/lidabo/p/5383934.html#3639633 1.uboot引导kernel: u-boot中有个bootm命令,它可以引导内存中的应用程序映像(Kernel),bootm命令对应 common/cmd_bootm.c中的do_bootm()函数,此函数实现下面几个功能: 1)读flash中的内核映像文件 2)解压内核 3)校验内核 4)跳到内核执行(调用do_bootm_linux()函数) { 1.Stage1 start.S

C语言中,头文件和源文件的关系(转)

简单的说其实要理解C文件与头文件(即.h)有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程: 1.预处理阶段 2.词法与语法分析阶段 3.编译阶段,首先编译成纯汇编语句,再将之汇编成跟CPU相关的二进制码,生成各个目标文件 (.obj文件)4.连接阶段,将各个目标文件中的各段代码进行绝对地址定位,生成跟特定平台相关的可执行文件,当然,最后还可以用objcopy生成纯二进制码,也就是去掉了文件格式信息.(生成.exe文件) 编译器在编译时是以C文件为单位进行的,也就是

Ok6410裸机驱动学习(一)开发工具

1.GCC工具链 1.GCC默认处理的文件类型 文件类型 扩展名 文件说明 文本文件 *.c C语言源文件 *.C.*.cxx.*.cc C++源文件 *.i 预处理后的C语言源文件 *.ii 预处理后的C++源文件 *.s.*.S 汇编语言 *.h 头文件 二进制文件 .o 目标文件 .so 动态库 .a 静态库 表1.gcc默认处理的文件类型 GCC是一组工具的集合,包含了预处理器.编译器.汇编器.连接器等部分. 2.编译工具和Binutils GCC的核心是编译工具gcc,用于编译c程序,

Linux嵌入式驱动学习之路⑤u-boot启动流程分析

这里说的u-boot启动流程,值得是从上电开机执行u-boot,到u-boot,到u-boot加载操作系统的过程.这一过程可以分为两个过程,各个阶段的功能如下. 第一阶段的功能: 硬件设备初始化. 加载u-boot第二阶段代码到RAM空间. 设置好栈. 跳转到第二阶段代码入口. 第二阶段的功能: 初始化本阶段使用的硬件设备. 检查系统内存映射. 将内核从Flash读取到RAM中. 为内核设置启动参数. 调用内核. u-boot启动第一阶段流程 根据连接器脚本 board/samsung/$(BO

C中的C文件与h文件辨析

简单的说其实要理解C文件与头文件(即.h)有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程:       1.预处理阶段 2.词法与语法分析阶段 3.编译阶段,首先编译成纯汇编语句,再将之汇编成跟CPU相关的二进制码,生成各个目标文件 (.obj文件) 4.连接阶段,将各个目标文件中的各段代码进行绝对地址定位,生成跟特定平台相关的可执行文件,当然,最后还可以用objcopy生成纯二进制码,也就是去掉了文件格式信息.(生成.exe文件) 编译器在编译时是以C文件为单位

【嵌入式开发】 Bootloader 详解 ( 代码环境 | ARM 启动流程 | uboot 工作流程 | 架构设计)

作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42462795 转载请著名出处 相关资源下载 :  -- u-boot 源码 : http://download.csdn.net/detail/han1202012/8342761 -- S3C2440 文档 : http://download.csdn.net/detail/han1202012/8342701 -- S5PV210_iROM_Applicati

nios ii boot过程

目录 1       概述....................................................................... 1 2       几种常见的boot方式......................................................... 1 2.1.................................................................................