出于某种原因,我试图制作一个只有必要组件才能运行的最小Linux系统。我成功地在我的系统上安装了BusyBox,但是我在安装glibc时遇到了麻烦。
我只是按照本网站上的说明操作: http://wiki.beyondlogic.org/index.php?title=Cross_Compiling_BusyBox_for_ARM
根据说明书,glibc生成的所有库都放在' / lib'目录。但是当我尝试按如下方式执行虚拟C程序时
#include <stdio.h>
int main { printf ("hello\n"); }
系统打印了一个&#34;未找到&#34;信息。据推测这条消息意味着系统无法找到glibc库。
如何让系统找到&#39; / lib&#39;中的库?目录默认情况下?如果Linux内核默认已从那里找到库,那可能是什么错误?
上述程序被放入&#39; / scratch&#39;目录名称为&#39; a.out&#39;。我尝试通过输入&#39; ./ a.out&#39;在目录中执行它。这是&#39; ls&#39;的结果。在根目录
中bin dev etc include lib linuxrc proc root sbin scratch sys usr
正如我所提到的,所有的glibc库都在&#39; / lib&#39; 。目录
答案 0 :(得分:1)
not found
消息肯定不是由于缺少libc
(您输入了哪些完全命令才能获得该消息?)。也许你有一些PATH
问题,你的shell(可能是BusyBox)给你的?尝试输入可执行文件的完整路径....
如果ldd(1)或strace(1)可用,您可能需要使用它们。
你显然想要采取与Linux From Scratch非常相似的东西。
您可能对musl-libc感兴趣(它是GNU glibc
的替代品,可能稍微容易构建)
Stricto sensu,你不能拥有一个只有一个裸Linux内核的运行系统,它至少需要一些初始程序(例如/sbin/init
或/bin/sh
,或者你通过{{1}提供的任何东西} thru GRUB或其他加载器到你的内核)
使用ABI&amp; <{3}}(可能是它们的交叉构建变体)在您的可执行文件中,以了解其中的内容。
我建议在进行此类路线之前,先阅读有关objdump(1)的更多信息。