2013-02-09 11 views
5

Posiadam działający crosschompiler toolchain, dzięki crosstool-ng :) - jednak crosstool-ng jest bardzo rzadko udokumentowany, a ja jestem zupełnie nowy w tworzeniu kompilacji. Konkretny host i cel nie są, jak sądzę, ważne w tym kontekście.crosstool-ng, struktura katalogów i sysroot

Mam kilka podstawowych pytań dotyczących struktury katalogów. Łańcuch narzędzi został zainstalowany w katalogu nazwanym po celu. Wewnątrz że to zestaw katalogów:

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

przypuszczam to dla rzeczywistych bitów cross-kompilatora, ponieważ kompilatory w bin/pracują w tym celu. Zauważ, że istnieje katalog wewnętrzny-nieznany-linux-gnueabi /, tzn. Ścieżka jest tam ../arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi. Wewnątrz znajduje się inne drzewo:

bin 
debug-root 
include 
lib 
lib32 
lib64 
sysroot 

Katalogi lib * są dowiązaniami symbolicznymi do sysroot /. Rzeczy w bin wydaje się być ten sam zestaw narzędzi cross-kompilacji jak w katalogu nadrzędnego/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 

więc moje pierwsze pytaniebrzmi: co to jest za? Do czego służy ten katalog?

Moje drugie pytanie to: jak powinno się używać sysroot/używać? Jest to najwyraźniej dla bibliotek pomocniczych natywnych dla platformy docelowej, więc zakładam, że gdybym budował taką bibliotekę, powinienem użyć jej jako --prefix, chociaż byłoby to równoznaczne z używaniem katalogu nadrzędnego, ponieważ lib * jest dowiązaniem symbolicznym ... ten "katalog pośrodku" z binem i dowiązaniami symbolicznymi do sysroota jest mylący. Wierzę, że (niektóre) pakiety stylu autotools można skonfigurować "--with-sysroot". Jakie jest znaczenie tego, jeśli widzę, i jak należy go używać w odniesieniu do innych opcji, takich jak --prefiks, itp.?

Odpowiedz

3

Na swoim pierwszym pytaniu, jak toolchain zainstalowanym katalogu:

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

Są to te same, naprawdę trudne linki.

Możesz użyć uzgadniania-nieznanego-linux-gnueabi-gcc przez CC = arm-unknown-linux-gnueabi-gcc, np.

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

Albo

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

ja zawsze pierwsza postać, a nie jestem pewien, czy ta ostatnia forma działa.

Dla twojego drugiego pytania, z mojego doświadczenia, nie musisz martwić się o sysroot. cross-kompilator znajdzie automatycznie odpowiednie pliki nagłówkowe C w sysroot/usr/include.

Tyle że chcesz przejechać skompilować jakieś biblioteki i zainstalować je na sysroot, można je dostać za

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

I * jeszcze * gdyby nie zauważyli dwa pojemniki zawierają hardlinki! – delicateLatticeworkFever

+0

Bez względu na to, czy są to twarde linki czy nie, mają taką samą sumę kontrolną md5 – Like

Powiązane problemy