Embedded linux 当我们构建内核和busybox时,我们只需要busybox的工具链,而不是内核?
在为嵌入式设备构建一个小型linux系统时,我们需要基于默认工具链的配置集构建内核,这是对的。而rootfs需要一个工具链?由于体系结构是在内核中设置的,因此不需要工具链。而busy框是二进制的。因此,它需要一个工具链。我有疑问,请纠正我 工具链在嵌入式系统开发中起着非常重要的作用。 在编译和构建过程中,您还需要特定于您的体系结构的跨工具链。工具链将不是默认值。您必须在配置期间或在传递make命令时设置它,并指定您的工具链前缀Embedded linux 当我们构建内核和busybox时,我们只需要busybox的工具链,而不是内核?,embedded-linux,Embedded Linux,在为嵌入式设备构建一个小型linux系统时,我们需要基于默认工具链的配置集构建内核,这是对的。而rootfs需要一个工具链?由于体系结构是在内核中设置的,因此不需要工具链。而busy框是二进制的。因此,它需要一个工具链。我有疑问,请纠正我 工具链在嵌入式系统开发中起着非常重要的作用。 在编译和构建过程中,您还需要特定于您的体系结构的跨工具链。工具链将不是默认值。您必须在配置期间或在传递make命令时设置它,并指定您的工具链前缀 make CROSS\u COMPILE=arm none linu
make CROSS\u COMPILE=arm none linux gnueabi-
编译和构建Busybox时应该使用相同的工具链。如果您使用
这样就不用担心共享库了。但是如果您使用动态编译busybox,那么您的工具链在rootfs中起着重要的作用。在这里,您需要将工具链库复制到rootfs/lib
文件夹
只需键入以下命令,就可以知道需要复制的库是什么
strings\u安装/bin/busybox | grep^lib
显示应保存在rootfs的/lib
中的列表库
这个命令说,“从文件中获取所有字符串,只显示以lib开头的行。”
无法使用程序ldd,因为该程序已交叉编译,不会在计算机上运行
开发主机。
这些文件应从工具链的sysroot目录中获取。最现代的工具链
已使用sysroot配置,sysroot是包含来自工具链的文件的目录
可能出现在工具链目标系统的根文件系统上。检查您的工具链是否
sysroot支持,请尝试以下操作:
$arm linux gcc-print sysroot
/arm未知linux gnueabi/bin/arm linux gcc
如果这是一个有效的路径,则应该从中复制文件。如果未显示路径,请使用“查找”
要在中找到sysroot目录,或使用find查找libc.so,请执行以下操作:
$find-名称libc.so
找到libc和libm后,创建(您的rootfs)/lib
目录并将它们复制到那里。档案
很可能是指向其他文件的符号链接,因此请务必将它们全部收集起来。下一个要获取的文件是动态加载程序,
通常称为ld linux-,它也与libc.so.*一起驻留在lib目录中。
将其复制到/lib
目录。您的系统现在拥有所有共享库和加载程序,因此
BusyBox可以运行
因此,最后,如果你想编译任何应用程序或程序,你必须使用编译busybox的这个工具链来编译。工具链在嵌入式系统开发中起着非常重要的作用。 在编译和构建过程中,您还需要特定于您的体系结构的跨工具链。工具链将不是默认值。您必须在配置期间或在传递make命令时设置它,并指定您的工具链前缀
make CROSS\u COMPILE=arm none linux gnueabi-
编译和构建Busybox时应该使用相同的工具链。如果您使用
这样就不用担心共享库了。但是如果您使用动态编译busybox,那么您的工具链在rootfs中起着重要的作用。在这里,您需要将工具链库复制到rootfs/lib
文件夹
只需键入以下命令,就可以知道需要复制的库是什么
strings\u安装/bin/busybox | grep^lib
显示应保存在rootfs的/lib
中的列表库
这个命令说,“从文件中获取所有字符串,只显示以lib开头的行。”
无法使用程序ldd,因为该程序已交叉编译,不会在计算机上运行
开发主机。
这些文件应从工具链的sysroot目录中获取。最现代的工具链
已使用sysroot配置,sysroot是包含来自工具链的文件的目录
可能出现在工具链目标系统的根文件系统上。检查您的工具链是否
sysroot支持,请尝试以下操作:
$arm linux gcc-print sysroot
/arm未知linux gnueabi/bin/arm linux gcc
如果这是一个有效的路径,则应该从中复制文件。如果未显示路径,请使用“查找”
要在中找到sysroot目录,或使用find查找libc.so,请执行以下操作:
$find-名称libc.so
找到libc和libm后,创建(您的rootfs)/lib
目录并将它们复制到那里。档案
很可能是指向其他文件的符号链接,因此请务必将它们全部收集起来。下一个要获取的文件是动态加载程序,
通常称为ld linux-,它也与libc.so.*一起驻留在lib目录中。
将其复制到/lib
目录。您的系统现在拥有所有共享库和加载程序,因此
BusyBox可以运行
因此,最后,如果你想编译任何应用程序或程序,你必须使用编译busybox的这个工具链来编译。@shryas,你的解释是错误的。Toolchain不过是一个交叉编译器,它交叉编译源代码,这样它就可以在编译它的处理器体系结构上运行。即使kernel&bootloader是一个c代码,您希望它被移植到嵌入式板上,需要交叉编译,您需要工具链来交叉编译kernel&u-boot源代码。所以需要工具链,它可以是u-boot引导加载程序、内核、rfs(Busybox)和应用程序 @Shreyas,你的解释错了。Toolchain不过是一个交叉编译器,它交叉编译源代码,这样它就可以在编译它的处理器体系结构上运行。甚至内核和引导加载程序