2013-02-09 66 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