Linker error : undefined reference to _fbss
Linker error : undefined reference to _fbss
我正在从这个 this
中成功构建 pulp-riscv-gnu-toolchain
但是当我尝试使用内置编译器编译我的简单源代码时,
发生错误。
我的命令是riscv32-unknown-elf-g++ -o hello hello.cpp
错误信息是/home/jskim/test_toolchains_lib/gcc/riscv32-unknown-elf/7.1.1/../../../../riscv32-unknown-elf/bin/ld : cannot open linker script file riscv.ld : No such file or directory
所以我尝试使用这个命令 riscv32-unknown-elf-g++ -o main main.cpp -T /home/jskim/test_toolchains/riscv32-unknown-elf-ld/lib/ldscripts/elf32lriscv.x
但出现以下错误:/home/jskim/test_toolchains/lib/gcc/riscv32-unknown-elf/7.1.1/../../../../riscv32-unknown-elf/lib/crt0.o: In function '.L0': (.text+0x10):undefined reference to '_fbss' collect2: error: ld returned 1 exit status
我正在使用 CentOS 7.6,我尝试使用 gcc 4.8.5 和 7.3.1 构建这个 pulp-gcc,但两者都显示相同的错误。请帮助我。
我就是这样解决的
Actually Here is the solution.
我不准确,但我认为问题是名称不匹配。
crt0,它似乎是启动 riscv 处理器的助手,有这一行 la a0 _fbss
如果 _fbss 被 _edata 替换,链接器基本上可以识别这一点。所以我编辑位于 pulp-riscv-gnu-toolchain/riscv-newlib/libgloss/riscv/
的程序集文件并重建 gnu 工具链。并使用 -T 选项执行编译器,例如 riscv32-unknown-elf-g++ -o main main.cpp -T /home/jskim/test_toolchains/riscv32-unknown-elf-ld/lib/ldscripts/elf32lriscv.x
这是我认为最简单的解决方案。
我正在从这个 this
中成功构建 pulp-riscv-gnu-toolchain但是当我尝试使用内置编译器编译我的简单源代码时, 发生错误。
我的命令是riscv32-unknown-elf-g++ -o hello hello.cpp
错误信息是/home/jskim/test_toolchains_lib/gcc/riscv32-unknown-elf/7.1.1/../../../../riscv32-unknown-elf/bin/ld : cannot open linker script file riscv.ld : No such file or directory
所以我尝试使用这个命令 riscv32-unknown-elf-g++ -o main main.cpp -T /home/jskim/test_toolchains/riscv32-unknown-elf-ld/lib/ldscripts/elf32lriscv.x
但出现以下错误:/home/jskim/test_toolchains/lib/gcc/riscv32-unknown-elf/7.1.1/../../../../riscv32-unknown-elf/lib/crt0.o: In function '.L0': (.text+0x10):undefined reference to '_fbss' collect2: error: ld returned 1 exit status
我正在使用 CentOS 7.6,我尝试使用 gcc 4.8.5 和 7.3.1 构建这个 pulp-gcc,但两者都显示相同的错误。请帮助我。
我就是这样解决的
Actually Here is the solution.
我不准确,但我认为问题是名称不匹配。
crt0,它似乎是启动 riscv 处理器的助手,有这一行 la a0 _fbss
如果 _fbss 被 _edata 替换,链接器基本上可以识别这一点。所以我编辑位于 pulp-riscv-gnu-toolchain/riscv-newlib/libgloss/riscv/
的程序集文件并重建 gnu 工具链。并使用 -T 选项执行编译器,例如 riscv32-unknown-elf-g++ -o main main.cpp -T /home/jskim/test_toolchains/riscv32-unknown-elf-ld/lib/ldscripts/elf32lriscv.x
这是我认为最简单的解决方案。