硬汉嵌入式论坛

 找回密码
 立即注册
查看: 821|回复: 4
收起左侧

[其它] 求助GCC编译出现的莫名其妙的BUG

[复制链接]

3

主题

5

回帖

14

积分

新手上路

积分
14
发表于 2024-10-14 00:14:38 | 显示全部楼层 |阅读模式
指定链接脚本文件后GCC传递给链接器的文件obj/start.o就会丢失路径信息进而链接器找不到start.o

指定链接脚本

指定链接脚本

e84b0f8d4b8c61864c427f10500f6781.png
但是使用指定代码段链接地址时不会报错
ce708cf75228bf2d6e71a2066d1a9ed7.png
f609fa18e9872b4a291d93636d47b55a.png
回复

使用道具 举报

25

主题

232

回帖

307

积分

高级会员

积分
307
QQ
发表于 2024-10-14 08:46:52 | 显示全部楼层
你这个lds文件没找到吧。关于指定链接器脚本的部分我是这么写的。
-T \"${CMAKE_SOURCE_DIR}/5_PhysicalChip/Cpu/GCC/gd32f3x0_flash.ld\"
回复

使用道具 举报

3

主题

5

回帖

14

积分

新手上路

积分
14
 楼主| 发表于 2024-10-14 13:48:50 | 显示全部楼层
yono 发表于 2024-10-14 08:46
你这个lds文件没找到吧。关于指定链接器脚本的部分我是这么写的。
-T \"${CMAKE_SOURCE_DIR}/5_PhysicalCh ...

使用-Wl,--verbose打开连接器的输出后发现连接器在尝试找标准start.o
给gcc设置的-nostdlib好像没生效
arm-none-linux-gnueabihf-gcc -x assembler-with-cpp -c Start/start.S -o obj/start.o
arm-none-linux-gnueabihf-gcc -c -IAPP/Include/ -Wall -nostdlib -g App/Source/main.c -o obj/main.o
mkdir build
arm-none-linux-gnueabihf-gcc obj/start.o obj/main.o -Wall -nostdlib -nostartfiles -Wl,-nostdlib -Timax.lds -Wl,--verbose -o build/led.elf
GNU ld (Arm GNU Toolchain 13.3.Rel1 (Build arm-13.24)) 2.42.0.20240614
  Supported emulations:
   armelf_linux_eabi
   armelfb_linux_eabi
   armelf
   armelfb
opened script file imax.lds
D:/GNU_GCC_LINUX/13.3_rel1/bin/../lib/gcc/arm-none-linux-gnueabihf/13.3.1/../../../../arm-none-linux-gnueabihf/bin/ld.exe: mode armelf_linux_eabi
attempt to open obj/start.o succeeded
obj/start.o
attempt to open obj/main.o succeeded
obj/main.o
attempt to open start.o failed
attempt to open D:/GNU_GCC_LINUX/13.3_rel1/bin/../lib/gcc/arm-none-linux-gnueabihf/13.3.1\start.o failed
attempt to open D:/GNU_GCC_LINUX/13.3_rel1/bin/../lib/gcc\start.o failed
attempt to open D:/GNU_GCC_LINUX/13.3_rel1/bin/../lib/gcc/arm-none-linux-gnueabihf/13.3.1/../../../../arm-none-linux-gnueabihf/lib\start.o failed
attempt to open D:/GNU_GCC_LINUX/13.3_rel1/bin/../arm-none-linux-gnueabihf/libc/lib\start.o failed
attempt to open D:/GNU_GCC_LINUX/13.3_rel1/bin/../arm-none-linux-gnueabihf/libc/usr/lib\start.o failed
D:/GNU_GCC_LINUX/13.3_rel1/bin/../lib/gcc/arm-none-linux-gnueabihf/13.3.1/../../../../arm-none-linux-gnueabihf/bin/ld.exe: cannot find start.o: No such file or directory
attempt to open start.o failed
回复

使用道具 举报

25

主题

232

回帖

307

积分

高级会员

积分
307
QQ
发表于 2024-10-14 19:57:42 | 显示全部楼层
你这个编译指令从哪搞得,总感觉怪怪的,缺一些编译器标志的样子
回复

使用道具 举报

3

主题

5

回帖

14

积分

新手上路

积分
14
 楼主| 发表于 2024-10-14 20:10:44 | 显示全部楼层
yono 发表于 2024-10-14 19:57
你这个编译指令从哪搞得,总感觉怪怪的,缺一些编译器标志的样子

问chatgpt搞的。
我就想链接个俩文件点亮LED灯。
编译器是从arm官网下载的arm-none-linux-gnueabihf-gcc
问题是gcc指令-nostdlib网上说就不会链接标准库和启动文件了,但是这个还会报错
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-12 16:13 , Processed in 0.042046 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表