crosstool-ng,目录结构和sysroot

我有一个工作交叉编译工具链,感谢crosstool-ng 🙂 – 但是,crosstool-ng是非常稀疏的文件,我是交叉编译新品。 具体的东道主和目标不是,我认为在这方面很重要。

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

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

我认为这是针对实际的交叉编译器位,因为bin / do中的编译器正是为此目的而工作的。 请注意,有一个内部武装未知的linux的gnueabi /目录,即在那里的path是../arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi 。 里面还有另外一棵树:

 bin debug-root include lib lib32 lib64 sysroot 

lib *目录是符号链接到sysroot /。 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 /? 很显然,对于目标平台的本地支持库,所以我认为如果我正在构build这样一个库,我应该使用它作为--prefix ,尽pipe它与使用父目录相同,因为lib *是符号链接的…这个“在中间的目录”与一个bin和符号链接到sysroot是混乱。 我相信(一些)autotools风格的软件包可以configuration“–with-sysroot”。 那么 ,如果我看到它,那么它的意义是什么?它应该如何与其他选项(如–prefix等)相关联使用?

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

  • 斌/手臂未知的Linux gnueabi-GCC
  • 手臂未知的Linux的-gnueabi /斌/ GCC

他们是一样的,确实很难链接。

你可以通过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