2013-02-09 67 views
5

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

我对目录结构有一些基本的问题。工具链安装在目标名称后面的目录中。里面是一组目录:

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

我想这是实际的交叉编译器位,因为在斌/编译器不达到这个目的。注意到有一个内部arm-unknown-linux-gnueabi /目录,即那里的路径是../arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi。里面有另外一棵树:

bin 
debug-root 
include 
lib 
lib32 
lib64 
sysroot 

lib *目录符号链接到sysroot /中。在箱中的东西似乎是同一组的交叉编译工具的父目录/斌:

> 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 *是符号链接的...这个“在中间的目录”有一个bin和符号链接到sysroot是令人困惑的。我相信(一些)autotools风格的软件包可以配置为“--with-sysroot”。 如果我看到它,的意义是什么?它应该如何与其他选项(如--prefix等)相关地使用?

回答

3

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

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

它们是相同的,确实很难链接。您可以通过CC = arm-unknown-linux-gnueabi-gcc(例如,使用arm-unknown-linux-gnueabi-gcc来使用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 
+0

得到它,我仍然* *没有注意到两个箱含有硬链接! – delicateLatticeworkFever 2014-06-16 12:49:43

+0

无论它们是否是硬连接,它们都具有相同的md5校验和 – Like 2014-06-16 20:16:35