2016-10-03 107 views
1

我想交叉編譯glibc。但是,我得到一個錯誤。glibc交叉編譯配置錯誤

  • glibc版本是2.24
  • 我試着編譯主機和目標i686-elf。我的$ MACHTYPE環境標籤爲x86_64-pc-linux-gnu
  • 目標目錄包括binutils-2.27gcc-6.2.0
  • 我的PATH環境是:

    /家庭/埃爾詹/交叉/工具/ tools_binaries/i686的/ bin中:在/ usr/local/sbin中:在/ usr/local/bin目錄:/ usr/sbin目錄:在/ usr /斌:/ sbin目錄:/ bin中:在/ usr /遊戲:在/ usr /本地/遊戲

控制檯輸出已上市下面:

[email protected] ~/cross/tools/tools_sources/build-glibc $ ../glibc-2.24/configure --prefix="/home/ercan/cross/tools/tools_binaries/i686/i686-elf" --build=$MACHTYPE --host=i686-elf --target=i686-elf --with-headers="/home/ercan/cross/tools/tools_binaries/i686/i686-elf/include" libc_cv_forced_unwind=yes 
checking build system type... x86_64-pc-linux-gnu 
checking host system type... i686-pc-elf 
checking for i686-elf-gcc... i686-elf-gcc 
checking for suffix of object files... o 
checking whether we are using the GNU C compiler... yes 
checking whether i686-elf-gcc accepts -g... yes 
checking for gcc... gcc 
checking for i686-elf-readelf... i686-elf-readelf 
checking for i686-elf-g++... i686-elf-g++ 
checking whether we are using the GNU C++ compiler... yes 
checking whether i686-elf-g++ accepts -g... yes 
checking whether i686-elf-g++ can link programs... no 
checking for sysdeps preconfigure fragments... aarch64 alpha arm hppa i386 m68k microblaze mips nacl nios2 powerpc s390 sh sparc tile x86_64 
configure: running configure fragment for add-on libidn 
configure: error: 
*** The GNU C library is currently unavailable for this platform. 
*** If you are interested in seeing glibc on this platform visit 
*** the "How to submit a new port" in the wiki: 
*** https://sourceware.org/glibc/wiki/#Development 
*** and join the community! 

它沒有配置與該的config.log是在build-glibc裏面列出的內容如下:

This file contains any messages produced by compilers while 
running configure, to aid debugging if configure makes a mistake. 

It was created by GNU C Library configure (see version.h), which was 
generated by GNU Autoconf 2.69. Invocation command line was 

    $ ../glibc-2.24/configure --prefix=/home/ercan/cross/tools/tools_binaries/i686/i686-elf --build=x86_64-pc-linux-gnu --host=i686-elf --target=i686-elf --with-headers=/home/ercan/cross/tools/tools_binaries/i686/i686-elf/include libc_cv_forced_unwind=yes 

## --------- ## 
## Platform. ## 
## --------- ## 

hostname = SAMSUNG 
uname -m = x86_64 
uname -r = 4.4.0-21-generic 
uname -s = Linux 
uname -v = #37-Ubuntu SMP Mon Apr 18 18:33:37 UTC 2016 

/usr/bin/uname -p = unknown 
/bin/uname -X  = unknown 

/bin/arch    = unknown 
/usr/bin/arch -k  = unknown 
/usr/convex/getsysinfo = unknown 
/usr/bin/hostinfo  = unknown 
/bin/machine   = unknown 
/usr/bin/oslevel  = unknown 
/bin/universe   = unknown 

PATH: /home/ercan/cross/tools/tools_binaries/i686/bin 
PATH: /usr/local/sbin 
PATH: /usr/local/bin 
PATH: /usr/sbin 
PATH: /usr/bin 
PATH: /sbin 
PATH: /bin 
PATH: /usr/games 
PATH: /usr/local/games 


## ----------- ## 
## Core tests. ## 
## ----------- ## 

configure:2189: checking build system type 
configure:2203: result: x86_64-pc-linux-gnu 
configure:2223: checking host system type 
configure:2236: result: i686-pc-elf 
configure:2265: checking for i686-elf-gcc 
configure:2281: found /home/ercan/cross/tools/tools_binaries/i686/bin/i686-elf-gcc 
configure:2292: result: i686-elf-gcc 
configure:2561: checking for C compiler version 
configure:2570: i686-elf-gcc --version >&5 
i686-elf-gcc (GCC) 6.2.0 
Copyright (C) 2016 Free Software Foundation, Inc. 
This is free software; see the source for copying conditions. There is NO 
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 

configure:2581: $? = 0 
configure:2570: i686-elf-gcc -v >&5 
Using built-in specs. 
COLLECT_GCC=i686-elf-gcc 
COLLECT_LTO_WRAPPER=/home/ercan/cross/tools/tools_binaries/i686/libexec/gcc/i686-elf/6.2.0/lto-wrapper 
Target: i686-elf 
Configured with: ../gcc-6.2.0/configure --target=i686-elf --prefix=/home/ercan/cross/tools/tools_binaries/i686 --enable-languages=c,c++ --without-headers 
Thread model: single 
gcc version 6.2.0 (GCC) 
configure:2581: $? = 0 
configure:2570: i686-elf-gcc -V >&5 
i686-elf-gcc: error: unrecognized command line option '-V' 
i686-elf-gcc: fatal error: no input files 
compilation terminated. 
configure:2581: $? = 1 
configure:2570: i686-elf-gcc -qversion >&5 
i686-elf-gcc: error: unrecognized command line option '-qversion'; did you mean '--version'? 
i686-elf-gcc: fatal error: no input files 
compilation terminated. 
configure:2581: $? = 1 
configure:2586: checking for suffix of object files 
configure:2608: i686-elf-gcc -c conftest.c >&5 
configure:2612: $? = 0 
configure:2633: result: o 
configure:2637: checking whether we are using the GNU C compiler 
configure:2656: i686-elf-gcc -c conftest.c >&5 
configure:2656: $? = 0 
configure:2665: result: yes 
configure:2674: checking whether i686-elf-gcc accepts -g 
configure:2694: i686-elf-gcc -c -g conftest.c >&5 
configure:2694: $? = 0 
configure:2735: result: yes 
configure:2764: checking for gcc 
configure:2780: found /usr/bin/gcc 
configure:2791: result: gcc 
configure:2815: checking for i686-elf-readelf 
configure:2831: found /home/ercan/cross/tools/tools_binaries/i686/bin/i686-elf-readelf 
configure:2842: result: i686-elf-readelf 
configure:2920: checking for i686-elf-g++ 
configure:2936: found /home/ercan/cross/tools/tools_binaries/i686/bin/i686-elf-g++ 
configure:2947: result: i686-elf-g++ 
configure:3018: checking for C++ compiler version 
configure:3027: i686-elf-g++ --version >&5 
i686-elf-g++ (GCC) 6.2.0 
Copyright (C) 2016 Free Software Foundation, Inc. 
This is free software; see the source for copying conditions. There is NO 
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 

configure:3038: $? = 0 
configure:3027: i686-elf-g++ -v >&5 
Using built-in specs. 
COLLECT_GCC=i686-elf-g++ 
COLLECT_LTO_WRAPPER=/home/ercan/cross/tools/tools_binaries/i686/libexec/gcc/i686-elf/6.2.0/lto-wrapper 
Target: i686-elf 
Configured with: ../gcc-6.2.0/configure --target=i686-elf --prefix=/home/ercan/cross/tools/tools_binaries/i686 --enable-languages=c,c++ --without-headers 
Thread model: single 
gcc version 6.2.0 (GCC) 
configure:3038: $? = 0 
configure:3027: i686-elf-g++ -V >&5 
i686-elf-g++: error: unrecognized command line option '-V' 
i686-elf-g++: fatal error: no input files 
compilation terminated. 
configure:3038: $? = 1 
configure:3027: i686-elf-g++ -qversion >&5 
i686-elf-g++: error: unrecognized command line option '-qversion'; did you mean '--version'? 
i686-elf-g++: fatal error: no input files 
compilation terminated. 
configure:3038: $? = 1 
configure:3042: checking whether we are using the GNU C++ compiler 
configure:3061: i686-elf-g++ -c conftest.cpp >&5 
configure:3061: $? = 0 
configure:3070: result: yes 
configure:3079: checking whether i686-elf-g++ accepts -g 
configure:3099: i686-elf-g++ -c -g conftest.cpp >&5 
configure:3099: $? = 0 
configure:3140: result: yes 
configure:3165: checking whether i686-elf-g++ can link programs 
configure:3188: i686-elf-g++ -o conftest -g -O2 conftest.cpp >&5 
/home/ercan/cross/tools/tools_binaries/i686/lib/gcc/i686-elf/6.2.0/../../../../i686-elf/bin/ld: cannot find crt0.o: No such file or directory 
/home/ercan/cross/tools/tools_binaries/i686/lib/gcc/i686-elf/6.2.0/../../../../i686-elf/bin/ld: cannot find crtbegin.o: No such file or directory 
/home/ercan/cross/tools/tools_binaries/i686/lib/gcc/i686-elf/6.2.0/../../../../i686-elf/bin/ld: cannot find -lstdc++ 
/home/ercan/cross/tools/tools_binaries/i686/lib/gcc/i686-elf/6.2.0/../../../../i686-elf/bin/ld: cannot find -lm 
/home/ercan/cross/tools/tools_binaries/i686/lib/gcc/i686-elf/6.2.0/../../../../i686-elf/bin/ld: cannot find -lgcc 
/home/ercan/cross/tools/tools_binaries/i686/lib/gcc/i686-elf/6.2.0/../../../../i686-elf/bin/ld: cannot find -lg 
/home/ercan/cross/tools/tools_binaries/i686/lib/gcc/i686-elf/6.2.0/../../../../i686-elf/bin/ld: cannot find -lc 
/home/ercan/cross/tools/tools_binaries/i686/lib/gcc/i686-elf/6.2.0/../../../../i686-elf/bin/ld: cannot find -lgcc 
/home/ercan/cross/tools/tools_binaries/i686/lib/gcc/i686-elf/6.2.0/../../../../i686-elf/bin/ld: cannot find crtend.o: No such file or directory 
collect2: error: ld returned 1 exit status 
configure:3188: $? = 1 
configure: failed program was: 
| /* confdefs.h */ 
| #define PACKAGE_NAME "GNU C Library" 
| #define PACKAGE_TARNAME "glibc" 
| #define PACKAGE_VERSION "(see version.h)" 
| #define PACKAGE_STRING "GNU C Library (see version.h)" 
| #define PACKAGE_BUGREPORT "http://sourceware.org/bugzilla/" 
| #define PACKAGE_URL "http://www.gnu.org/software/glibc/" 
| #define PKGVERSION "(GNU libc) " 
| #define REPORT_BUGS_TO "<http://www.gnu.org/software/libc/bugs.html>" 
| /* end confdefs.h. */ 
| 
| int 
| main() 
| { 
| 
| ; 
| return 0; 
| } 
configure:3211: i686-elf-g++ -o conftest -g -O2 -static conftest.cpp >&5 
conftest.cpp:12:20: fatal error: iostream: No such file or directory 
#include <iostream> 
        ^
compilation terminated. 
configure:3211: $? = 1 
configure: failed program was: 
| /* confdefs.h */ 
| #define PACKAGE_NAME "GNU C Library" 
| #define PACKAGE_TARNAME "glibc" 
| #define PACKAGE_VERSION "(see version.h)" 
| #define PACKAGE_STRING "GNU C Library (see version.h)" 
| #define PACKAGE_BUGREPORT "http://sourceware.org/bugzilla/" 
| #define PACKAGE_URL "http://www.gnu.org/software/glibc/" 
| #define PKGVERSION "(GNU libc) " 
| #define REPORT_BUGS_TO "<http://www.gnu.org/software/libc/bugs.html>" 
| /* end confdefs.h. */ 
| 
| #include <iostream> 
| 
| int 
| main() 
| { 
| std::cout << "Hello, world!"; 
| return 0; 
| } 
| 
configure:3226: result: no 
configure:3709: checking for sysdeps preconfigure fragments 
configure:3716: result: 
configure:3787: running configure fragment for add-on libidn 
configure:3868: error: 
*** The GNU C library is currently unavailable for this platform. 
*** If you are interested in seeing glibc on this platform visit 
*** the "How to submit a new port" in the wiki: 
*** https://sourceware.org/glibc/wiki/#Development 
*** and join the community! 

## ---------------- ## 
## Cache variables. ## 
## ---------------- ## 

ac_cv_build=x86_64-pc-linux-gnu 
ac_cv_c_compiler_gnu=yes 
ac_cv_cxx_compiler_gnu=yes 
ac_cv_env_CCC_set= 
ac_cv_env_CCC_value= 
ac_cv_env_CC_set= 
ac_cv_env_CC_value= 
ac_cv_env_CFLAGS_set= 
ac_cv_env_CFLAGS_value= 
ac_cv_env_CPPFLAGS_set= 
ac_cv_env_CPPFLAGS_value= 
ac_cv_env_CPP_set= 
ac_cv_env_CPP_value= 
ac_cv_env_CXXFLAGS_set= 
ac_cv_env_CXXFLAGS_value= 
ac_cv_env_CXX_set= 
ac_cv_env_CXX_value= 
ac_cv_env_LDFLAGS_set= 
ac_cv_env_LDFLAGS_value= 
ac_cv_env_LIBS_set= 
ac_cv_env_LIBS_value= 
ac_cv_env_build_alias_set=set 
ac_cv_env_build_alias_value=x86_64-pc-linux-gnu 
ac_cv_env_host_alias_set=set 
ac_cv_env_host_alias_value=i686-elf 
ac_cv_env_target_alias_set=set 
ac_cv_env_target_alias_value=i686-elf 
ac_cv_host=i686-pc-elf 
ac_cv_objext=o 
ac_cv_prog_BUILD_CC=gcc 
ac_cv_prog_CC=i686-elf-gcc 
ac_cv_prog_CXX=i686-elf-g++ 
ac_cv_prog_READELF=i686-elf-readelf 
ac_cv_prog_cc_g=yes 
ac_cv_prog_cxx_g=yes 
libc_cv_cxx_link_ok=no 
libc_cv_forced_unwind=yes 
libc_cv_nss_crypt=no 

## ----------------- ## 
## Output variables. ## 
## ----------------- ## 

AR='' 
AS='' 
ASFLAGS_config='' 
AUTOCONF='' 
AWK='' 
BASH_SHELL='' 
BISON='' 
BUILD_CC='gcc' 
CC='i686-elf-gcc' 
CFLAGS='-g -O2' 
CPP='i686-elf-gcc -E' 
CPPFLAGS='' 
CPPUNDEFS='' 
CXX='' 
CXXFLAGS='-g -O2' 
CXX_SYSINCLUDES='' 
DEFINES='' 
DEFS='' 
ECHO_C='' 
ECHO_N='-n' 
ECHO_T='' 
INSTALL_DATA='' 
INSTALL_INFO='' 
INSTALL_PROGRAM='' 
INSTALL_SCRIPT='' 
LD='' 
LDFLAGS='' 
LIBGD='' 
LIBOBJS='' 
LIBS='' 
LN_S='' 
LTLIBOBJS='' 
MAKE='' 
MAKEINFO='' 
MSGFMT='' 
NM='' 
OBJCOPY='' 
OBJDUMP='' 
OBJEXT='o' 
PACKAGE_BUGREPORT='http://sourceware.org/bugzilla/' 
PACKAGE_NAME='GNU C Library' 
PACKAGE_STRING='GNU C Library (see version.h)' 
PACKAGE_TARNAME='glibc' 
PACKAGE_URL='http://www.gnu.org/software/glibc/' 
PACKAGE_VERSION='(see version.h)' 
PATH_SEPARATOR=':' 
PERL='' 
PKGVERSION='(GNU libc) ' 
PKGVERSION_TEXI='(GNU libc) ' 
READELF='i686-elf-readelf' 
RELEASE='' 
REPORT_BUGS_TEXI='@uref{http://www.gnu.org/software/libc/bugs.html}' 
REPORT_BUGS_TO='<http://www.gnu.org/software/libc/bugs.html>' 
SED='' 
SHELL='/bin/bash' 
SYSINCLUDES='' 
VERSION='' 
ac_ct_CC='' 
ac_ct_CXX='' 
add_on_subdirs=' libidn' 
add_ons='libidn' 
all_warnings='' 
base_machine='i386' 
bindir='${exec_prefix}/bin' 
bindnow='no' 
build='x86_64-pc-linux-gnu' 
build_alias='x86_64-pc-linux-gnu' 
build_cpu='x86_64' 
build_nscd='default' 
build_os='linux-gnu' 
build_pt_chown='no' 
build_vendor='pc' 
cross_compiling='yes' 
datadir='${datarootdir}' 
datarootdir='${prefix}/share' 
docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' 
dvidir='${docdir}' 
enable_lock_elision='no' 
enable_timezone_tools='yes' 
enable_werror='yes' 
exec_prefix='NONE' 
fno_unit_at_a_time='' 
force_install='yes' 
hardcoded_path_in_tests='no' 
have_libaudit='' 
have_libcap='' 
have_selinux='' 
host='i686-pc-elf' 
host_alias='i686-elf' 
host_cpu='i686' 
host_os='elf' 
host_vendor='pc' 
htmldir='${docdir}' 
includedir='${prefix}/include' 
infodir='${datarootdir}/info' 
ldd_rewrite_script='' 
libc_cv_cc_loop_to_function='' 
libc_cv_cc_nofma='' 
libc_cv_cc_submachine='' 
libc_cv_cc_with_libunwind='' 
libc_cv_complocaledir='' 
libc_cv_cxx_thread_local='' 
libc_cv_fpie='' 
libc_cv_gcc_unwind_find_fde='' 
libc_cv_has_glob_dat='' 
libc_cv_hashstyle='' 
libc_cv_localstatedir='' 
libc_cv_mtls_dialect_gnu2='' 
libc_cv_nss_crypt='no' 
libc_cv_output_format='' 
libc_cv_pic_default='' 
libc_cv_pie_default='' 
libc_cv_protected_data='' 
libc_cv_rootsbindir='' 
libc_cv_rtlddir='' 
libc_cv_slibdir='' 
libc_cv_sysconfdir='' 
libc_cv_z_combreloc='' 
libc_cv_z_execstack='' 
libc_extra_cflags='' 
libc_extra_cppflags='' 
libdir='${exec_prefix}/lib' 
libexecdir='${exec_prefix}/libexec' 
link_obsolete_rpc='no' 
localedir='${datarootdir}/locale' 
localstatedir='${prefix}/var' 
mach_interface_list='' 
mandir='${datarootdir}/man' 
multi_arch='default' 
oldincludedir='/usr/include' 
pdfdir='${docdir}' 
prefix='/home/ercan/cross/tools/tools_binaries/i686/i686-elf' 
profile='no' 
program_transform_name='s,x,x,' 
psdir='${docdir}' 
sbindir='${exec_prefix}/sbin' 
shared='yes' 
sharedstatedir='${prefix}/com' 
stack_protector='' 
static='' 
static_nss='no' 
subdirs=' ' 
submachine='' 
sysconfdir='${prefix}/etc' 
sysdeps_add_ons='' 
sysheaders='/home/ercan/cross/tools/tools_binaries/i686/i686-elf/include' 
sysnames='' 
target_alias='i686-elf' 
use_default_link='default' 
use_ldconfig='' 
use_nscd='yes' 
with_fp='yes' 

## ----------- ## 
## confdefs.h. ## 
## ----------- ## 

/* confdefs.h */ 
#define PACKAGE_NAME "GNU C Library" 
#define PACKAGE_TARNAME "glibc" 
#define PACKAGE_VERSION "(see version.h)" 
#define PACKAGE_STRING "GNU C Library (see version.h)" 
#define PACKAGE_BUGREPORT "http://sourceware.org/bugzilla/" 
#define PACKAGE_URL "http://www.gnu.org/software/glibc/" 
#define PKGVERSION "(GNU libc) " 
#define REPORT_BUGS_TO "<http://www.gnu.org/software/libc/bugs.html>" 
#define HAVE_LIBIDN 1 

configure: exit 1 

我如何爲i686-elf交叉編譯glibc?感謝您的回覆。

+0

什麼是您的gcc二進制名稱出現在路徑/ home/ercan/cross/tools/tools_binaries/i686/bin –

回答

0

您正在嘗試爲裸金屬目標構建glibc。據我所知,這不會起作用。
如果目標實際上是裸機,則使用newlib。

對於linux目標,使用--host=i686-pc-linux-gnu代替,並通過CC=i686-elf-gcc進行配置(如有必要)。

+0

我使用i686-linux作爲主機和目標。這是行得通的。 –