您尚未登录。

#1 2023-09-21 15:01:11

renxiuhu
会员
注册时间: 2023-09-21
帖子: 10

riscv32-elf-gcc在archlinux上直接Segmentation fault

有个github repo要编译需要安装他们提供的riscv gcc编译工具。repo在ubuntu 20.04上可以正常编译。

然后我想把编译环境迁移到archlinux上来,发现他们提供的riscv gcc在archlinux上无法运行了。查看version信息是可以显示的,但是去编译.c文件就会出现下面错误:

./riscv32-elf-gcc ~/a.c
Segmentation fault

他们的文档里推荐使用ubuntu 20.04,我原本以为现成的toolchain从ubuntu复制过来运行应该差别不大,应该可以通用。结果看来并不可行。
难道是因为glibc版本不一致吗?archlinux的glibc版本太新了?

最近编辑记录 renxiuhu (2023-09-21 15:03:34)

离线

#2 2023-09-21 15:03:16

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,821
个人网站

Re: riscv32-elf-gcc在archlinux上直接Segmentation fault

别猜。gdb 看看为什么段错误。

离线

#3 2023-09-21 15:12:27

renxiuhu
会员
注册时间: 2023-09-21
帖子: 10

Re: riscv32-elf-gcc在archlinux上直接Segmentation fault

依云 说:

别猜。gdb 看看为什么段错误。

riscv32-elf-gcc是现成提供的编译工具链,gdb attach之后没有symbols:
$ gdb riscv32-elf-gcc ~/a.c
...
Reading symbols from riscv32-elf-gcc...
(No debugging symbols found in riscv32-elf-gcc)

离线

#4 2023-09-21 15:25:37

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,821
个人网站

Re: riscv32-elf-gcc在archlinux上直接Segmentation fault

没符号也能看出来段错误的直接原因呀。看看反汇编,再看看寄存器的值。

离线

#5 2023-09-21 15:30:03

renxiuhu
会员
注册时间: 2023-09-21
帖子: 10

Re: riscv32-elf-gcc在archlinux上直接Segmentation fault

依云 说:

没符号也能看出来段错误的直接原因呀。看看反汇编,再看看寄存器的值。

好的,我再试试,多谢

离线

#6 2023-09-21 16:15:16

renxiuhu
会员
注册时间: 2023-09-21
帖子: 10

Re: riscv32-elf-gcc在archlinux上直接Segmentation fault

update了一下系统可以编译了,现在编译一个空.c文件已经没有段错误了:
$ ./riscv32-elf-gcc ~/a.c
/home/renxiuhu/opt/risc-v/nds32le-elf-mculib-v5f/bin/../lib/gcc/riscv32-elf/10.4.0/../../../../riscv32-elf/bin/ld: /home/renxiuhu/opt/risc-v/nds32le-elf-mculib-v5f/bin/../lib/gcc/riscv32-elf/10.4.0/../../../../riscv32-elf/lib/crt0.o: in function `.L0 ':
(.text+0x52): undefined reference to `main'
collect2: error: ld returned 1 exit status

虽然没搞清楚原有,但是问题解决!

离线

#7 2023-09-21 18:30:15

renxiuhu
会员
注册时间: 2023-09-21
帖子: 10

Re: riscv32-elf-gcc在archlinux上直接Segmentation fault

找到原因,是vsyscall没开启导致的,打开就好了。有类似问题的可以参考
可能我更新了系统,把grub配置又改过来了。

离线

#8 2023-09-21 19:00:26

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,821
个人网站

Re: riscv32-elf-gcc在archlinux上直接Segmentation fault

原来又是这 vsyscall 的问题。

离线

#9 2023-09-21 19:44:20

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,821
个人网站

Re: riscv32-elf-gcc在archlinux上直接Segmentation fault

不对啊, Arch 不是开了 vsyscall 的么。

离线

#10 2023-09-22 17:34:21

renxiuhu
会员
注册时间: 2023-09-21
帖子: 10

Re: riscv32-elf-gcc在archlinux上直接Segmentation fault

依云 说:

不对啊, Arch 不是开了 vsyscall 的么。

不清楚了,可能我之前操作给关了:D

最近编辑记录 renxiuhu (2023-09-22 17:34:58)

离线

页脚