在Linux环境中,所处平台不同,执行文件也就不同,同一执行文件不能在不同平台下使用
如在Ubnutu下 是用gcc编译一个.c文件
gcc main.c -o main.out
-o 可以指定输出文件名
但是这个mian.out文件只能在Ubnutu等其他X86构架的平台上运行,如果我们要在ARM上运行,就需要使用交叉编译器。
交叉编译器需要去根据系统构架去官网下载。
使用交叉编译器的编译一个可执行裸机文件:
流程
①、使用arm-linux-gnueabihf-gcc,将.c .s文件变为.o
arm-linux-gnueabihf-gcc -g -c main.c -o main.o
②、将所有的.o文件连接为elf格式的可执行文件。
arm-linux-gnueabihf-ld -Ttext 0X87800000 main.o -o main.elf
其中0x87800000为代码起始执行地址。
③、将elf文件转为bin文件。
arm-linux-gnueabihf-objcopy -O binary -S -g main.elf main.bin
也可以将elf文件转为汇编,反汇编。
arm-linux-gnueabihf-objdump -D main.elf > main.dis
再使用imxdownload烧写到存储目录
./imxdownload main.bin /dev/sdd
原文:https://www.cnblogs.com/puchi/p/11803947.html