Embedded linux 当我们构建内核和busybox时,我们只需要busybox的工具链,而不是内核?

Embedded linux 当我们构建内核和busybox时,我们只需要busybox的工具链,而不是内核?,embedded-linux,Embedded Linux,在为嵌入式设备构建一个小型linux系统时,我们需要基于默认工具链的配置集构建内核,这是对的。而rootfs需要一个工具链?由于体系结构是在内核中设置的,因此不需要工具链。而busy框是二进制的。因此,它需要一个工具链。我有疑问,请纠正我 工具链在嵌入式系统开发中起着非常重要的作用。 在编译和构建过程中,您还需要特定于您的体系结构的跨工具链。工具链将不是默认值。您必须在配置期间或在传递make命令时设置它,并指定您的工具链前缀 make CROSS\u COMPILE=arm none linu

在为嵌入式设备构建一个小型linux系统时,我们需要基于默认工具链的配置集构建内核,这是对的。而rootfs需要一个工具链?由于体系结构是在内核中设置的,因此不需要工具链。而busy框是二进制的。因此,它需要一个工具链。我有疑问,请纠正我

工具链在嵌入式系统开发中起着非常重要的作用。 在编译和构建过程中,您还需要特定于您的体系结构的跨工具链。工具链将不是默认值。您必须在配置期间或在传递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的这个工具链来编译。

工具链在嵌入式系统开发中起着非常重要的作用。 在编译和构建过程中,您还需要特定于您的体系结构的跨工具链。工具链将不是默认值。您必须在配置期间或在传递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不过是一个交叉编译器,它交叉编译源代码,这样它就可以在编译它的处理器体系结构上运行。甚至内核和引导加载程序