/ / Kompilowanie gentoo-bionic na maszynie Linux x86_64 - Android, Ubuntu, kompilacja, automake, bionic

Kompilowanie gentoo-bionic na maszynie linuksowej x86_64 - android, ubuntu, kompilacja, automake, bionic

Jak może wiesz, Bioniczny to biblioteka C używana przez Google do uruchamiania AndroidaAplikacje. Próbowano go skompilować na komputerach z systemem Linux, aby można go było łatwo używać poza systemem Android. Jest to kod z jednego z ostatnich wysiłków, pierwotnie zwany Gentoo-bionic. Oryginalny projekt był oparty na Gentoo, ale obecne źródło nie jest specyficzne dla Gentoo. Używam Ubuntu. Oto kod:

https://github.com/gentoobionic/bionic

A oto prezentacja na ten temat na ELC2013:

Próbowałem go skompilować na Ubuntu X86_64, ale nie udało się. Próbowałem:

./autogen.sh
./configure

Mam:

configure: error: unsupported host cpu x86_64

Więc próbowałem:

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

Skonfigurował się dobrze, ale dostałem:

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

Czy jest szansa, że ​​ktoś może zasugerować obejście?

Odpowiedzi:

2 dla odpowiedzi № 1

Od listopada 2015 r. Mój zestaw skryptów ebuid skompiluj bionic dla x86_64 i i386 na moim pulpicie Gentoo x86_64. Wymagane narzędzia: GCC-targetowanie Glibc w wersji 4.9.3 lub 5.3.0; binutils 2.4.25 lub starszy, clang ukierunkowany na glibc 3.5.0, make.

Jeśli możesz zainstalować te narzędzia na pulpicie, możesz potencjalnie skompilować bionic.

Zauważ jednak, że moje ebuildy stosują miliony łatek.

Aby zobaczyć, co robią, możesz:

  1. Uruchom Gentoo DVD na żywo na pulpicie lub notebooku x86_64.
  2. Zainstaluj moje skrypty.
  3. Uruchom na przykład przechwytywanie danych wyjściowych

    USE = pełny ebuild bionic / bionic-5.1.1-r29.ebuild clean install qmerge 2> & 1 | tee /tmp/bionic.cout

Gdy takie polecenie zakończy się, otrzymasz poprawione drzewo źródłowe, wynik kompilacji pośredniej i końcowej oraz pełny dziennik kompilacji za pomocą wiersza poleceń gcc / clang / ld / ar.


3 dla odpowiedzi № 2

Nic nie wiem o bionice. Chcę ci tylko pomóc. kiedy przeglądałem plik konfiguracji, zobaczyłem ten kod.

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: wiersz 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

W folderze include / machine nie ma pliku cpu-features.h. Musisz więc użyć innego celu.