目录
前言
这是在正点原子编译自己写的文件时出现的错误,错误现象很奇怪,就是找不到这个start.o文件。
arm-linux-gnueabihf-ld -Timx6ull.lds -o ledc.elf obj/start.o obj/main.o obj/bsp_clk.o obj/bsp_led.o obj/bsp_delay.o
arm-linux-gnueabihf-ld: cannot find start.o
make: *** [Makefile:39:ledc.bin] 错误 1
错误特点
1 .文件确实存在,可以通过在终端和Makefile中加入指令查到。
2.如果把指令运行到obj文件夹(imx6ull.lds放到obj文件夹)里可以运行完成,但是拿出来放到代码根目录就是不行。
3.根据Ai的建议,改写了Makefile文件中的相对路径变为绝对路径不行。
4.根据Ai的建议,查看了交叉编译的指向问题,错误提示,确实有点问题,但是AI解答不出。
错误原因
最后发现了与路径无关,也与交叉编译器无光,错误原因为imx6ull.lds文件错误
SECTIONS{
. = 0x87800000;
.text :
{
start.o
*(.text)
}
.rodata ALIGN(4) : {*(.rodata*)}
.data ALIGN(4) : {*(.data)}
__bss_start=.;
.bss ALIGN(4) : {*(.bss) *(COMMON)}
__bss_end=.;
}
在.text段内start.o改为obj/start.o,但是实际上根据AI的解答,lds文件应该只影响编译后的运行,但是现在的实际情况就是在编译过程中找不到start.o文件,具体原因不清楚