2016-03-31 13 views
5

Come forse sapete, Bionic è una libreria C utilizzata da Google per eseguire applicazioni Android. Ci sono degli sforzi per compilarlo nelle macchine Linux, quindi potrebbe essere facilmente usato al di fuori di Android. Questo è il codice da uno degli ultimi sforzi, originariamente chiamato Gentoo-bionic. Il progetto originale era basato su Gentoo, ma la fonte corrente non è specifica per Gentoo. Sto usando Ubuntu. Ecco il codice:Compilazione di gentoo-bionic su una macchina x86_64 linux

https://github.com/gentoobionic/bionic

E questa è la presentazione a questo proposito sul ELC2013:

ho provato a compilare su X86_64 Ubuntu, ma non è riuscito. Ho provato:

./autogen.sh 
./configure 

ho ottenuto:

configure: error: unsupported host cpu x86_64 

Così ho provato:

./configure --build=arm-linux --target=arm-linux --host=arm-linux 

E 'configurato bene, ma ho ottenuto:

$ make 
make: *** No rule to make target `libc/arch-x86/include/machine/cpu-features.h', 
    needed by `all-am'. Stop. 

C'è una possibilità qualcuno può suggerire una soluzione alternativa?

risposta

2

Da novembre 2015 il mio set of ebuid scripts compila bionic per x86_64 e i386 sul mio desktop Gentoo x86_64. Strumenti richiesti: glibc-targeting GCC versione 4.9.3 o 5.3.0; binutils 2.4.25 o precedente, glibc-targeting clang 3.5.0, make.

Se è possibile installare tali strumenti sul desktop, è possibile compilare potenzialmente bionico.

Si noti tuttavia che i miei ebuild applicano zillion di patch.

Per vedere quello che fanno, è possibile il seguente:

  1. Boot vivono Gentoo DVD su un desktop o notebook x86_64.
  2. Installa i miei script.
  3. eseguirli cattura di uscita, per esempio

    USE = verbose ebuild bionico/Bionic-5.1.1-r29.ebuild installazione pulita qmerge 2> & 1 | tee/tmp/bionic.cout

Una volta che tali termina di comando, si ottiene l'albero patch fonte, risultato della compilazione intermedia e finale, e log completo di compilazione con gcc/clang/LD/AR righe di comando.

+0

Lo sto facendo e spero di poter compilare facilmente l'albero dei sorgenti patchato altrove. Qui qualcuno ha detto: "Un ebuild è un semplice file di testo (nient'altro che uno script di bash). Basta avere il file sorgente e compilare la sorgente a mano (Portage, il gestore pacchetti Gentoo, usa i file ebuild per automatizzare la compilazione del file sorgenti)." http://ubuntuforums.org/showthread.php?t=255187 È corretto? – Ho1

3

Non so nulla di bionico. Voglio solo aiutarti. quando ho visto configurare il file, ho visto questo codice.

Makefile.h.am:Line 135

if TARGET_ARCH_IS_X86 
includemachine_HEADERS += \ 
    $(addprefix $(top_srcdir)/libc/arch-x86/include/, \ 
     machine/fpu_control.h \ 
     machine/sigcontext.h \ 
     machine/wordsize.h \ 
    ) 
endif 

if TARGET_ARCH_IS_ARM 
includemachine_HEADERS += \ 
    $(addprefix $(top_srcdir)/libc/arch-x86/include/, \ 
     machine/cpu-features.h \ 
    ) 
endif 

configure.ac: Linea 94

case $host_cpu in 
    *i?86*) 
    TARGET_ARCH=x86 
    COMMON_LDFLAGS="${COMMON_LDFLAGS} ${COMMON_LDFLAGS_X86}" 
    COMMON_CFLAGS="${COMMON_CFLAGS} ${COMMON_CFLAGS_X86}" 
    COMMON_INCLUDES="${COMMON_INCLUDES} ${COMMON_INCLUDES_X86}" 
    COMMON_LDLIBS="${COMMON_LDLIBS} ${COMMON_LDLIBS_X86}" 
    ;; 
    *arm*) 
    TARGET_ARCH=arm 
    COMMON_LDFLAGS="${COMMON_LDFLAGS} ${COMMON_LDFLAGS_ARM}" 
    COMMON_CFLAGS="${COMMON_CFLAGS} ${COMMON_CFLAGS_ARM}" 
    COMMON_INCLUDES="${COMMON_INCLUDES} ${COMMON_INCLUDES_ARM}" 
    COMMON_LDLIBS="${COMMON_LDLIBS} ${COMMON_LDLIBS_ARM}" 
    ;; 
    *) 
    AC_MSG_ERROR([unsupported host cpu $host_cpu]) 
    ;; 
esac 

Non v'è alcun file di CPU-features.h sulla includere cartella/macchina. Quindi, devi usare un target diverso.

Problemi correlati