在x86_64 linux机器上编译gentoo-bionic

在x86_64 linux机器上编译gentoo-bionic

问题描述:

如您所知,Bionic是Google用来运行Android应用程序的C库。有人努力在Linux机器上编译它,所以它可以很容易地在Android之外使用。这是来自最新努力的代码,最初名为Gentoo-bionic。最初的项目是基于Gentoo的,但目前的来源不是Gentoo特定的。我正在使用Ubuntu。下面的代码:在x86_64 linux机器上编译gentoo-bionic

https://github.com/gentoobionic/bionic

这是关于它的ELC2013演示:

我尝试对编译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. 

有机会有人可以建议一种解决方法?

自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。

如果您可以在桌面上安装这些工具,则可以编译仿生。

但请注意,我的ebuilds应用了数十亿个补丁。

要看到他们这样做,你可以将以下内容:

  1. 引导生活的Gentoo DVD一个x86_64的台式机或笔记本电脑上。
  2. 安装我的脚本。
  3. 运行它们捕获输出,例如

    USE =冗长的ebuild仿生/仿生-5.1.1-r29.ebuild干净安装qmerge 2> & 1 | tee/tmp/bionic。COUT

一旦这样的命令终止,你得到的补丁的源代码树,中间和最终编译的结果,并用gcc /铛/ LD/AR的命令行全面构建日志。

+0

我这样做,我希望我可以轻松地在别处编译修补源代码树。这里有人说:“ebuild是一个简单的文本文件(除了bash脚本以外),您只需要源文件并手动编译源代码(Portage,Gentoo软件包管理器,使用ebuild文件自动编译源文件)“。 http://ubuntuforums.org/showthread.php?t=255187它是正确的吗? – Ho1

我不知道任何关于仿生的东西。我只是想帮助你。 当我查看配置文件时,我看到了这个代码。

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

上有包括/机文件夹中没有CPU-features.h文件。所以,你必须使用不同的目标。