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:
- http://elinux.org/images/2/25/2013_elc_gentoo_bionic.pdf
- http://free-electrons.com/blog/elc-2013-videos/ (zły dźwięk)
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 № 1Od 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:
- Uruchom Gentoo DVD na żywo na pulpicie lub notebooku x86_64.
- Zainstaluj moje skrypty.
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.