gpt4 book ai didi

linux - crosstool-ng、目录结构和 sysroot

转载 作者:IT王子 更新时间:2023-10-29 00:36:09 26 4
gpt4 key购买 nike

感谢 crosstool-ng,我有一个可用的交叉编译器工具链 :) -- 然而,crosstool-ng 的文档非常稀少,而且我是交叉编译的新手。我认为在这种情况下,具体的宿主和目标并不重要。

我有一些关于目录结构的基本问题。工具链安装在以目标命名的目录中。里面有一组目录:

arm-unknown-linux-gnueabi
bin
include
lib
libexec
share

我认为这是针对实际的交叉编译器位,因为 bin/中的编译器确实为此目的工作。注意里面有一个arm-unknown-linux-gnueabi/目录,即里面的路径是../arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi。里面还有另一棵树:

bin
debug-root
include
lib
lib32
lib64
sysroot

lib* 目录是到 sysroot/的符号链接(symbolic link)。 bin里的东西好像和父目录/bin里的是同一套交叉编译工具:

> bin/gcc -v
Using built-in specs.
COLLECT_GCC=./gcc
Target: arm-unknown-linux-gnueabi
Configured with: /usr/x-tool/.build/src/gcc-4.7.2/configure
--build=x86_64-build_unknown-linux-gnu
--host=x86_64-build_unknown-linux-gnu
--target=arm-unknown-linux-gnueabi

所以我的第一个问题是:这些是做什么用的?这个目录是做什么用的?

我的第二个问题是:应该如何使用 sysroot/?它显然是针对目标平台的本地支持库,所以我想如果我正在构建这样一个库,我应该将它用作--prefix,尽管它相当于与使用父目录相同,因为 lib* 是符号链接(symbolic link)的……这个带有 bin 和向下到 sysroot 的符号链接(symbolic link)的“中间目录”令人困惑。我相信(一些)autotools 风格的包可以配置为“--with-sysroot”。 它有什么意义,如果我看到它,它应该如何与其他选项(如 --prefix 等)相关联使用?

最佳答案

对于你的第一个问题,作为工具链的安装目录:

  • bin/arm-unknown-linux-gnueabi-gcc
  • arm-unknown-linux-gnueabi/bin/gcc

它们是相同的,确实是硬链接(hard link)。

您可以通过 CC=arm-unknown-linux-gnueabi-gcc 使用 arm-unknown-linux-gnueabi-gcc,例如

export PATH=<toolchain installed dir>/bin:$PATH
CC=arm-unknown-linux-gnueabi-gcc ./configure
make

或者

export PATH=<toolchain installed dir>/arm-unknown-linux-gnueabi/bin:$PATH
./configure
make

我一直使用第一种形式,我不确定后一种形式是否有效。

关于你的第二个问题,根据我的经验,你不需要担心 sysroot。交叉编译器会自动在 sysroot/usr/include 中找到正确的 C 头文件。

除了你想交叉编译一些库,安装到sysroot下,可以通过

export PATH=<toolchain installed dir>/bin:$PATH
CC=arm-unknown-linux-gnueabi-gcc ./configure --prefix=<toolchain installed dir>/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot
make
make install

关于linux - crosstool-ng、目录结构和 sysroot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14791341/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com