首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

GCC、ARM-LINUX-GCC、ARM-ELF-GCC浅析

二、GCC内部结构: GCC内部结构主要由Binutils、gcc-core、Glibc等软件包组成。 1. Binutils:它是一组开发工具,包括连接器,汇编器和其他用于目标文件和档案的工具。...,而且安装过程中不能有半点差错,因为每个软件包都有它的依赖关系【换句话就是说安装某个软件包时,如果它的依赖软件版本太低或者没有安装都将导致该软件包安装失败】;嗯,废话不说了,入正题,下面是我摘自创建ARMlinux...六、arm-linux-gcc和arm-elf-gcc: arm-elf-gcc跟arm-linux-gcc一样,也是是基于ARM目标机的交叉编译软件。...arm-linux-gcc使用GNU的Glibc,而arm-elf-gcc一般使用 uClibc/uC-libc或者使用REDHAT专门为嵌入式系统的开发的C库newlib。...关于两者的区别,请参考arm-linux-gcc arm-elf-gcc区别。

6.5K10
您找到你想要的搜索结果了吗?
是的
没有找到

【Android 逆向】ELF 文件格式 ( ELF 文件简介 | ELF 文件结构 )

文章目录 一、ELF 文件简介 二、ELF 文件结构 一、ELF 文件简介 ---- ELF 文件是 Executable and Linkable Format ( 可执行 和 可链接 格式 ) 的文件...可执行文件 , 编译中间文件 , 都是 ELF 格式的文件 ; 在 Android 应用运行时 , ELF 文件的大部分内容 , 会被 映射到内存中 ; 这就意味着 Android 应用内存中的很多数据..., 会遵循 ELF 文件格式的规范 ; ELF 文件格式最常见的形式就是 .so 动态库 ; ELF 文件的特点 : ELF 文件是以 7F 45 4C 46 开头 , 其中 7F 是一个二进制标志..., 45 4C 46 是 ELF 字符对应的 ASCII 码 ; 二、ELF 文件结构 ---- ELF 文件由以下四部分组成 : ELF 文件ELF 程序头 : ELF 程序头 会告知 节区头部表的位置...; 节区或段 节区头部表 : 节区头部表 会告知 ELF 文件中有多少个 节区 , 一般 节区头部表 一般都在 ELF 文件尾部 ;

1.2K30

【Android 逆向】ELF 文件格式 ( ELF 文件头 | ELF 文件头标志 | ELF 文件位数 | ELF 文件大小端格式 )

文章目录 一、ELF 文件简介 二、ELF 文件头 三、ELF 文件头标志 四、ELF 文件位数 五、ELF 文件大小端格式 一、ELF 文件简介 ---- 在上一篇博客 【Android 逆向】ELF...文件格式 ( 安装 010 Editor 二进制查看工具的 ELF.bt 插件模板 | 安装 ELF.bt 模板 | 打开 ELF 文件 ) 中 , 准备 ELF 文件解析环境 , 在 010 Editor...中安装了 ELF.bt 模板 ; 二、ELF 文件头 ---- ELF 文件头区域如下 : 前 16 字节是 ELF 的标志 , 三、ELF 文件头标志 ---- 0 ~ 3 字节 : 是 0x7F...和 ELF 的 ASCII 码 ; 这是 ELF 文件的特征 ; 四、ELF 文件位数 ---- 4 字节 : 表示该 ELF 文件的位数 32 位还是 64 位 ; 值为 01 , 表示该 ELF...文件是 32 位 文件 ; 五、ELF 文件大小端格式 ---- 5 字节 : 表示 有效位 格式 , 取值 LSB / MSB ; 此处值为 1 , LSB 格式 ; 这个值由编译器决定 ; 有些

90710

elf文件解析器_elf文件下载

前两天网上投递了简历,面试了一家C++公司,然后对面负责人给我发了一份笔试题,题目是: 请写出一个ELF文件解析器, 需要能打印出所有segments和sections,并列出每个section和segment...源码如下(”elf.h” 头文件见后文),它会报warning,但是貌似不太影响最后结果: #include #include #include "elf.h" int...(0 == a) { printf("fail to read head\n"); exit(0); } // 判断elf文件类型 if(elf_head.e_ident[0] !...(0 == a) { printf(“fail to read head\n”); exit(0); } // 判断elf文件类型 if(elf_head.e_ident[0] !...“elf.h” ,里面定义了elf文件结构的各种数据结构,能够使解析elf的过程中更加方便: #ifndef _QEMU_ELF_H #define _QEMU_ELF_H #include <inttypes.h

1.5K20

第009课 gcc和arm-linux-gccMakefile

(3)汇编 汇编就是将第二步输出的汇编代码翻译成符合一定格式的机器代码,在Linux系统上一般表现为ELF目标文件(OBJ文件)。反汇编是指将机器代码转换为汇编代码,这在调试程序时常常用到。...gcc -v -nostdlib -o hello hello.o: 会提示因为没有链接系统标准启动文件和标准库文件,而链接失败。...依赖于b.c,当b.c更加新的话,执行下面的命令,来生成b.o gcc -c -o b.o b.c 我们来作一下实验: 在改目录下我们写一个Makefile文件文件Makefile 1 test...makefile,就是名字为“makefile”的文件。...gcc -M -MF c.d c.c // 把依赖写入文件c.d gcc -c -o c.o c.c -MD -MF c.d // 编译c.o, 把依赖写入文件c.d 修改Makefile如下

4.8K30

makefile 编译参数_gcc使用说明

gcc编译源文件共有4个过程,预处理、编译、汇编、链接。...预处理: 命令:gcc -E test.c -o test.i (-o后面指定生成文件的命名) 过程:展开宏定义(#define),处理编译条件指令(#if #ifndef等),插入引用的头文件(...汇编: 命令:gcc -c test.s -o test.o 过程:将汇编语言转换成二进制文件 结果:生成.o文件,一般的文本编辑器无法打开,二进制文件都是0、1 链接: 命令:gcc...test.o -o test 过程:链接动态库、静态库 结果:生成可执行文件 我们编译源文件的时候,可以分步编译,也可以使用gcc test.c -o test直接生成可执行文件。...将多个源文件编译输出时,需要一起进行gcc编译,可利用Makefile文件来实现。 分步编译如下: 最后得到main可执行文件,在cmd命令窗口下输入main+回车,即可运行main可执行文件

44420

深入讲解GCC和Make的区别(有涉及makefile文件哟!!!)

gcc是编译器 而make不是 make是依赖于Makefile来编译多个源文件的工具 在Makefile里同样是用gcc(或者别的编译器)来编译程序....gcc是编译一个文件,make是编译多个源文件的工程文件的工具。 make是一个命令工具,是一个解释makefile中指令的命令工具。...make就是一个gcc/g++的调度器,通过读入一个文件(默认文件名为Makefile或者makefile),执行一组以gcc/g++为主的shell命令序列。...要是好好分析过一个makefile文件就不会这么问了。 刚接触linux编程,很多概论都比较模糊,今天突然用到makefile文件,想到了make与gcc的关系。...而巧的是makefile这个文件里面基本写的都是gcc的命令,所以当你使用make的时候就会发现怎么和gcc最后的结果是一样的呀!!

11.8K30

Linux CC++工程中可生成ELF、动静态库文件的通用Makefile

最近写了一个*nix环境下的Makefile文件,支持编译C/C++,同时能够通过参数配置生成ELF目标文件、动态链接库(.so)和静态链接库(.a)文件。...1 Makefile文件配置说明 首先,根据生成的目标文件类型(ELF可执行文件,动态链接库文件或静态链接库文件),配置GEN_LIBS、GEN_DYN_LIB、EXCUTE_BIN、STATIC_LIBS...执行完make命令后,在当前目录下会生成.o目标文件以及.d依赖文件ELF可执行文件放在工程的bin目录下,动/静态库文件放在工程的lib目录下。...3 附录:Makefile文件源码 已将下面的Makefile文件托管到两个仓库中: 1、GitHub: https://github.com/vfhky/General_Makefile; 2、Coding...# DESCRIPT : A general makefile to generate an ELF or a # dynamic or a static library

12910

ELF文件程序表头和代码实现ELF文件加载

前面章节我们了解了ELF文件的头部结构,这次我们深入了解另一个非常重要的数据结构,那就是程序表头。操作系统严重依赖该结构来加载ELF文件或是实现动态链接。...程序表头反映的是当ELF加载到内存后所形成的“视图”或结构,也就是说ELF文件存在硬盘上或者被加载到内存,它展现出来的形态不一致。...Binary类用于对整个elf文件的抽象,通过它可以访问ELF文件相关信息,Section是对前面章节描述的段对象的抽象,Symbol是对前面章节符号表对象的抽象。...load_binary是来自libbfd库提供的函数,它将elf文件加载到内存中。...上面代码编译时对应的Makefile内容为: CXX=g++ OBJ=my_loader .PHONY: all clean all: $(OBJ) loader.o: ..

1.6K30

ELF文件格式

文章目录 源码到可执行文件 ELF文件格式 ELF File header Program header Section header 工具 Symbol Table 源码到可执行文件 linux中四类文件使用...例如这些扩展名的文件一般都是elf格式:.axf, .bin, .elf, .o, .prx, .puff, .ko, .so, and .mod ELF文件格式 引用wiki的一张图: https...://en.wikipedia.org/wiki/Executable_and_Linkable_Format ELF header在文件开始处描述了整个文件的组织 Section提供了目标文件的各项信息...Section包含目标文件除了ELF文件头、程序头表、section头表的所有信息,而且目标文件section满足几个条件: 目标文件中的每个section都只有一个section头项描述,可以存在不指示任何...符号表入口结构定义如下,可在/usr/include/elf.h中可以找到文件头结构定义: typedef struct elf64_sym { Elf64_Word st_name; /* Symbol

1.6K30

ELF文件结构描述

ELF目标文件格式最前部ELF文件头(ELF Header),它包含了描述了整个文件的基本属性,比如ELF文件版本、目标机器型号、程序入口地址等。...从上面输出的结构可以看到:ELF文件头定义了ELF魔数、文件机器字节长度、数据存储方式、版本、运行平台等。...ELF文件头结构及相关常数被定义在“/usr/include/elf.h”,因为ELF文件在各种平台下都通用,ELF文件有32位版本和64位版本的ELF文件文件头内容是一样的,只不过有些成员的大小不一样...段表 段表就是保存ELF文件中各种各样段的基本属性的结构。段表是ELF除了文件以外的最重要结构体,它描述了ELF的各个段的信息,ELF文件的段结构就是由段表决定的。...ELF符号表结构 ELF文件中的符号表往往是文件中的一个段,段名一般叫做“.symtab”。

1.5K50

Linux CC++工程中可生成 ELF、动静态库文件的通用 Makefile(二)

今天对之前写的 Linux C/C++工程中可生成ELF、动/静态库文件的通用Makefile - TypeCodes 文章里面的 Makefile 进行了优化,增加了在当前目录生成单个可执行文件的功能...1 功能说明 之前已有的功能不再赘述,这次主要是在包含多个 cpp 文件的项目中生成一个可执行文件(之前只能一个 cpp 或者 c 文件生成对应的一个可执行文件)。...2 附录:Makefile 文件源码 已将下面的 Makefile文件托管到 github仓库中: 1、GitHub: https://github.com/vfhky/General_Makefile...: A general makefile to generate an ELF or a # dynamic or a static library for...AS := as LD := ld CC := gcc CXX := g++ CPP := $(CC) -E AR := ar rcs NM

7110

Linux CC++工程中可生成 ELF、动静态库文件的通用 Makefile(二)

今天对之前写的 Linux C/C++工程中可生成ELF、动/静态库文件的通用Makefile - TypeCodes 文章里面的 Makefile 进行了优化,增加了在当前目录生成单个可执行文件的功能...1 功能说明 之前已有的功能不再赘述,这次主要是在包含多个 cpp 文件的项目中生成一个可执行文件(之前只能一个 cpp 或者 c 文件生成对应的一个可执行文件)。...2 附录:Makefile 文件源码 已将下面的 Makefile文件托管到 github仓库中: 1、GitHub: https://github.com/vfhky/General_Makefile...: A general makefile to generate an ELF or a # dynamic or a static library for...AS := as LD := ld CC := gcc CXX := g++ CPP := $(CC) -E AR := ar rcs NM

7410
领券