乐鑫技术交流
直播中

张静

7年用户 1434经验值
私信 关注
[问答]

ESP8266不会根据链接顺序启动怎么解决?

所以我在 eclipse 中使用 Cross GCC 和一个我命名为 main.c 的主文件有这个 ESP8266 应用程序。
所有编译器和链接器标志都是手动设置的,我的编译和链接都成功了。
但是根据我的链接顺序,我的应用程序运行与否。
如果我链接下面的命令,应用程序运行完美
代码:全选xtensa-lx106-elf-gcc -L"C:\ESP8266\esp8266-bsp\RTOS-SDK\lib" -L"C:\ESP8266\HAL" -nostdlib -u call_user_start -Wl,-static -TC:/ESP8266/esp8266-bsp/RTOS-SDK/ld/eagle.app.v6.ld -Wl,--gc-sections -o "RGBDisplay" -Wl,--start-group -lminic -lmirom -lcirom -lm -lgcc -lhal -lphy -lpp -lnet80211 -lwpa -lcrypto -lmain -lfreertos -llwip -lssc -lspiffs -Wl,--end-group  ./main.o

但是您看到链接顺序错误,因为 main.o 应该出现在所有 SDK 库之前。如果我最终从我的 main.o 中引用了一些库代码,我会得到错误“对 xxx 的未定义引用”。
所以我不得不订购我的链接
代码:全选xtensa-lx106-elf-gcc -L"C:\ESP8266\esp8266-bsp\RTOS-SDK\lib" -L"C:\ESP8266\HAL" -nostdlib -u call_user_start -Wl,-static -TC:/ESP8266/esp8266-bsp/RTOS-SDK/ld/eagle.app.v6.ld -Wl,--gc-sections -o "RGBDisplay" -Wl,--start-group ./main.o -lminic -lmirom -lcirom -lm -lgcc -lhal -lphy -lpp -lnet80211 -lwpa -lcrypto -lmain -lfreertos -llwip -lssc -lspiffs -Wl,--end-group

编译和链接仍然成功,但它不会在目标 ESP8266 上运行。
我也试过
代码:全选xtensa-lx106-elf-gcc -L"C:\ESP8266\esp8266-bsp\RTOS-SDK\lib" -L"C:\ESP8266\HAL" -nostdlib -u call_user_start -Wl,-static -TC:/ESP8266/esp8266-bsp/RTOS-SDK/ld/eagle.app.v6.ld -Wl,--gc-sections -o "RGBDisplay"  ./main.o -Wl,--start-group -lminic -lmirom -lcirom -lm -lgcc -lhal -lphy -lpp -lnet80211 -lwpa -lcrypto -lmain -lfreertos -llwip -lssc -lspiffs -Wl,--end-group

它也不会运行。
我当然错过了一些东西。正确的?


               

更多回帖

发帖
×
20
完善资料,
赚取积分