【问题标题】:Linux for Embedded Systems | NiosIILinux 嵌入式系统 | NiosII
【发布时间】:2015-03-18 06:18:50
【问题描述】:

我已经为 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的编译是正确的。

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

【问题讨论】:

  • 请编辑您的问题以改进它。
  • 我现在尝试更好地编辑它:D Basile Starynkevitch。我希望它现在看起来更好。
  • 还有其他有效的命令吗?如果您只是运行“busybox”,它是否也会出现分段错误?也许你的内存用完了?
  • 如果我运行busybox,它不会导致分段错误。它做得很好。

标签: linux embedded-linux busybox buildroot


【解决方案1】:

是的,ls 程序可能在undefined behavior 上崩溃,并带有segmentation violation。检查ls 是否不是内置函数(可能使用which ls 或使用echo $PATH

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

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

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

【讨论】:

  • 我想在我面临的问题上非常简洁。但是,我可以提供您想要的信息。我的系统中除了busybox 之外没有其他程序。我只运行 ls,因为我想列出当前文件夹中的目录。这让我很沮丧,因为我已经审查并尝试通过busybox 和内核的不同设置来修复它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-23
  • 1970-01-01
  • 1970-01-01
  • 2020-02-09
  • 2017-01-07
  • 1970-01-01
相关资源
最近更新 更多