Linux for Embedded Systems | NiosII的

时间:2015-03-18 06:18:50

标签: linux embedded-linux busybox buildroot

我为NiosII编译了Linux。我在RAM中有一个文件系统。我使用busybox,buildroot来制作文件系统。然后使用先前创建的文件系统编译内核。

一旦Linux启动,如果我运行像ls这样的命令(因为我想列出当前文件夹中的目录),它会导致SEGV(分段错误)

dtlinux login: root
Password: 
login[547]: root login on 'ttyJ0'

BusyBox v1.23.1 (2015-03-17 16:38:07 CDT) hush - the humble shell
Enter 'help' for a list of built-in commands.

~ # ls
SEGV
~ # 

我在系统中没有开发其他程序。我只是想用静音

来尝试busybox 1.23.1

如果我提供帮助,就会发生这种情况:

~ # help
Built-in commands:
------------------
.         Run commands in a file
bg        Resume a job in the background
break     Exit from a loop
...
... (I shortened this it was to long to post)
...
wait      Wait for process
~ #

这让我觉得busybox编译正确。

有没有人遇到过类似的问题?

1 个答案:

答案 0 :(得分:1)

是的,ls计划可能会在undefined behavior上崩溃,但segmentation violation。检查ls是否不是内置版(可能使用which ls或使用echo $PATH

也许您的libc(或来自ls的{​​{1}}命令)可能是错误构建的(或某些动态链接问题)。

尝试(交叉)编译一些静态链接的程序(甚至可能是某些 hello world )然后尝试将该程序复制到目标系统然后运行它。如果它运行,则意味着内核能够为某些系统调用提供服务,并可能提示错误的coreutils或动态链接问题。

(我希望您在桌面上运行Linux,因为您需要熟悉Linux来调试您的问题)