网站开发动态,什么网站可以请人做软件下载,网站规划设计是什么样的,东莞营销策划推广公司arm-elf-gcc交叉编译器的使用教程 一开始需要安装arm-elf-gcc#xff0c;但是这是一个32位的程序#xff0c;我是安装了64位的系统#xff0c;据说安装ia32.libs依赖库能运行这个#xff0c;但是看到博客上面前人安装完了系统图标少了一半#xff0c;然后就怕了。经过了翻…arm-elf-gcc交叉编译器的使用教程 一开始需要安装arm-elf-gcc但是这是一个32位的程序我是安装了64位的系统据说安装ia32.libs依赖库能运行这个但是看到博客上面前人安装完了系统图标少了一半然后就怕了。经过了翻看ubuntu论坛和各种博客才知道14版之后的ubuntu64位官方已经抛弃了ia32.libs这个依赖库在源列表中也是找不到的。但是官方自身已经支持32位自带32位依赖库在根目录下面就有一个lib32文件夹。 安装教程 博主使用的是arm-elf-tools-20040427.sh的编译器比较老旧但不影响使用。 打开终端切换到arm-elf-tools-200427.sh所在路径增加执行权限sudo chmod 755 arm-elf-tools-20040427.sh安装sudo sh arm-elf-tools-20040427.sh以上安装完成 注文件arm-elf-tools-20040427.sh的大小有17M这个脚本就是安装文件。没事不要用普通的文本编辑器打开高级点的文本编辑器可以。 使用教程 首先上一份简单的测试代码 int max( int* pt, int size )
{int max_v -32768;int* tmp pt[size];int* pi pt;while(pitmp){if( *pimax_v ){max_v *pi;}pi;}return max_v;
} arm-elf-gcc -S max.c 得到由c文件生成的汇编文件max.sarm-elf-gcc -c max.s 由汇编文件编译得到Object文件max.oarm-elf-readelf -a max.o max_elfinfo 这个命令将给出全部的Object文件信息,保存在max_elfinfo这个文件中查看一下max_elfinfo文件ELF_header查看一下max_elfinfo文件Section_headerhexdump -C max.o max_hex 直接打印出Object文件的全部字节保存在max_hex文件中 以上面的.real.text为例子Elf最后输出的内容 .rel.text告诉链接器指令中的哪些地方需要做重定位; .symtab是符号表。Ndx列是每个符号所在的Section编号arm-elf-ld.real -o max2.out max.o 链接指定Object文件max2.out为生成的文件max.o为源文件 由于没有__gccmain函数入口故有warning此处先不管绿色即为新生成文件用readelf命令分析新生成的max2.outarm-elf-readelf -a max2.out max2_elfinfo调用不同c文件中的子函数 程序修改后如下编译两份c文件生成 .o 文件arm-elf-ld.real -o main2.out main.o encrypt_char.o -lc main2.out是链接生成的文件main.o encrypt_char.o是参与链接的源文件-lc 允许链接器搜索默认的路径当你使用了系统自带的头文件或子函数时需要添加该选项以便链接器能顺利链接到对应库arm-elf-objdump -S main2.out main2_1.s 反汇编链接后的.out文件和链接前的.o文件反汇编结果进行比较 新生成的main2_1.s文件里面比原来的多了很多内容最大的不同在于区分了各个文件的代码段转载于:https://www.cnblogs.com/wsine/p/4664503.html