问题
linux@ubuntu:~/jz_2440/led_007_008$ make
arm-none-linux-gnueabi-gcc -c -o led.o led.c
arm-none-linux-gnueabi-gcc -c -o start.o start.s
arm-none-linux-gnueabi-ld -Ttext 0 -g start.o led.o -o led.elf
led.o:(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'
make: *** [all] Error 1
解决方法
arm-none-linux-gnueabi-gcc -g -nostdlib -c -o led.o led.c
arm-none-linux-gnueabi-gcc -g -nostdlib -c -o start.o start.s
arm-none-linux-gnueabi-ld -Ttext 0 -g start.o led.o -o led.elf
arm-none-linux-gnueabi-objcopy -O binary -S led.elf led.bin
arm-none-linux-gnueabi-objdump -D led.elf > led.dis
原因
nostdlib就是不使用标准函数库,标准函数库就是编译器中自带的函数库。如果此时我们不想启动编译器自带的函数库,而是用我们自己的代码中的函数时,我们可以用-nostdlib可以让编译器链接器优先选择我程序内自己写的函数库。