在 x86_64 linux 机器上编译 gentoo-bionic
Compiling gentoo-bionic on a x86_64 linux machine
如您所知,Bionic 是 Google 到 运行 Android 应用程序使用的 C 库。人们正在努力在 Linux 机器上编译它,因此它可以很容易地在 Android 之外使用。这是来自一项最新成果的代码,最初称为 Gentoo-bionic。最初的项目是基于 Gentoo 的,但当前的源代码不是特定于 Gentoo 的。我正在使用 Ubuntu。这是代码:
https://github.com/gentoobionic/bionic
这是在 ELC2013 上的介绍:
- http://elinux.org/images/2/25/2013_elc_gentoo_bionic.pdf
- http://free-electrons.com/blog/elc-2013-videos/(声音不好)
我试图在 X86_64 Ubuntu 上编译它,但失败了。我试过了:
./autogen.sh
./configure
我得到了:
configure: error: unsupported host cpu x86_64
所以我尝试了:
./configure --build=arm-linux --target=arm-linux --host=arm-linux
配置很好,但我得到了:
$ make
make: *** No rule to make target `libc/arch-x86/include/machine/cpu-features.h',
needed by `all-am'. Stop.
是否有人可以建议解决方法?
我对仿生一无所知。我只是想帮助你。
当我查看配置文件时,我看到了这段代码。
Makefile.h.am:第 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:第 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
include/machine 文件夹中没有 cpu-features.h 文件。所以,你必须使用不同的目标。
自 2015 年 11 月以来,我的 set of ebuid scripts 在我的 Gentoo x86_64 桌面上为 x86_64 和 i386 编译仿生。所需工具:glibc-targeting GCC 版本 4.9.3 或 5.3.0; binutils 2.4.25 或更早版本,glibc-targeting clang 3.5.0,make.
如果你能在桌面上安装这些工具,你就有可能编译 bionic。
但是请注意,我的 ebuild 应用了无数个补丁。
要查看他们的工作,您可以执行以下操作:
- 在 x86_64 台式机或笔记本电脑上启动 live Gentoo DVD。
- 安装我的脚本。
运行 它们捕获输出,例如
USE=verbose ebuild bionic/bionic-5.1.1-r29.ebuild 全新安装 qmerge 2>&1 | tee /tmp/bionic.cout
一旦此类命令终止,您将获得修补后的源代码树、中间和最终编译结果以及带有 gcc/clang/ld/ar 命令行的完整构建日志。
如您所知,Bionic 是 Google 到 运行 Android 应用程序使用的 C 库。人们正在努力在 Linux 机器上编译它,因此它可以很容易地在 Android 之外使用。这是来自一项最新成果的代码,最初称为 Gentoo-bionic。最初的项目是基于 Gentoo 的,但当前的源代码不是特定于 Gentoo 的。我正在使用 Ubuntu。这是代码:
https://github.com/gentoobionic/bionic
这是在 ELC2013 上的介绍:
- http://elinux.org/images/2/25/2013_elc_gentoo_bionic.pdf
- http://free-electrons.com/blog/elc-2013-videos/(声音不好)
我试图在 X86_64 Ubuntu 上编译它,但失败了。我试过了:
./autogen.sh
./configure
我得到了:
configure: error: unsupported host cpu x86_64
所以我尝试了:
./configure --build=arm-linux --target=arm-linux --host=arm-linux
配置很好,但我得到了:
$ make
make: *** No rule to make target `libc/arch-x86/include/machine/cpu-features.h',
needed by `all-am'. Stop.
是否有人可以建议解决方法?
我对仿生一无所知。我只是想帮助你。 当我查看配置文件时,我看到了这段代码。
Makefile.h.am:第 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:第 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
include/machine 文件夹中没有 cpu-features.h 文件。所以,你必须使用不同的目标。
自 2015 年 11 月以来,我的 set of ebuid scripts 在我的 Gentoo x86_64 桌面上为 x86_64 和 i386 编译仿生。所需工具:glibc-targeting GCC 版本 4.9.3 或 5.3.0; binutils 2.4.25 或更早版本,glibc-targeting clang 3.5.0,make.
如果你能在桌面上安装这些工具,你就有可能编译 bionic。
但是请注意,我的 ebuild 应用了无数个补丁。
要查看他们的工作,您可以执行以下操作:
- 在 x86_64 台式机或笔记本电脑上启动 live Gentoo DVD。
- 安装我的脚本。
运行 它们捕获输出,例如
USE=verbose ebuild bionic/bionic-5.1.1-r29.ebuild 全新安装 qmerge 2>&1 | tee /tmp/bionic.cout
一旦此类命令终止,您将获得修补后的源代码树、中间和最终编译结果以及带有 gcc/clang/ld/ar 命令行的完整构建日志。