glibc的问题
本帖最后由 kallytin 于 2017-04-04 14:15 编辑编译glibc碰到问题,具体如下:
编译平台:ubuntu12.04-32位(i386)
目标平台:linux-32位(arm7)
1、工具包
binutils-2.23.1.tar.bz2
gcc-4.7.2.tar.bz2
glibc-2.15-cpuid.patch
glibc-2.15-s_frexp.patch
glibc-2.15.tar.xz
gmp-5.0.5.tar.bz2
linux-3.7.4.tar.xz
mpc-1.0.1.tar.gz
mpfr-3.1.1.tar.bz2
glibc-ports-2.15.tar.xz
2、安装gawk, libtool
sudo apt-get -y install gawk
sudo apt-get -y install libtool
3、设置环境变量
unset LANG
export HOST=i686-pc-linux-gnu
export BUILD=$HOST
export TARGET=arm-unknown-linux-gnueabi
export CROSS_TOOL=/dest/cross-tool
export CROSS_GCC_TMP=/dest/cross-gcc-tmp
export SYSROOT=/dest/sysroot
PATH=$CROSS_TOOL/bin:$CROSS_GCC_TMP/bin:/sbin:/usr/sbin:$PATH
4、安装binutils
cd /dest/build
tar xvf ../source/binutils-2.23.1.tar.bz2
mkdir binutils-build
cd binutils-build
../binutils-2.23.1/configure --prefix=$CROSS_TOOL --target=$TARGET --with-sysroot=$SYSROOT
make
make install
5、编译“过渡”gcc
cd /dest/build
tar xvf ../source/gcc-4.7.2.tar.bz2
cd /dest/build/gcc-4.7.2
tar xvf ../../source/gmp-5.0.5.tar.bz2
mv gmp-5.0.5/ gmp
tar xvf ../../source/mpfr-3.1.1.tar.bz2
mv mpfr-3.1.1/ mpfr
tar xvf ../../source/mpc-1.0.1.tar.gz
mv mpc-1.0.1/ mpc
cd /dest/build
mkdir gcc-build
cd gcc-build
../gcc-4.7.2/configure --prefix=$CROSS_GCC_TMP --target=$TARGET --with-sysroot=$SYSROOT --with-newlib --enable-languages=c --with-mpfr-include=/dest/build/gcc-4.7.2/mpfr/src --with-mpfr-lib=/dest/build/gcc-build/mpfr/src/.libs --disable-shared --disable-threads --disable-decimal-float --disable-libquadmath --disable-libmudflap --disable-libgomp --disable-nls --disable-libssp
make
make install
cd /dest/cross-gcc-tmp
ln -s libgcc.a lib/gcc/arm-unknown-linux-gnueabi/4.7.2/libgcc_eh.a
6、安装内核头文件
cd /dest/build
tar xvf ../source/linux-3.7.4.tar.xz
cd linux-3.7.4
make mrproper
make ARCH=arm headers_check
make ARCH=arm INSTALL_HDR_PATH=$SYSROOT/usr/ headers_install
7、安装glibc
cd /dest/build
tar xvf ../source/glibc-2.15.tar.xz
cd /vita/build
tar xvf ../source/glibc-ports-2.15.tar.xz
mv glibc-ports-2.15 /vita/build/glibc-2.15/ports
cd glibc-2.15
patch -p1 < ../../source/glibc-2.15-cpuid.patch
patch -p1 < ../../source/glibc-2.15-s_frexp.patch
cd /dest/build
mkdir glibc-build
cd glibc-build
../glibc-2.15/configure --prefix=/usr --host=$TARGET --enable-kernel=3.7.4 --enable-add-ones --with-headers=$SYSROOT/usr/include libc_cv_forced_unwind=yes libc_cv_c_cleanup=yes libc_cv_ctors_header=yes
make
make install_root=$SYSROOT install
这里报错:
configure: error: cannot compute suffix of object files: cannot compile
See `config.log' for more details
make: *** No targets specified and no makefile found.Stop.
make: *** No rule to make target `install'.Stop.
查看 config.log,发现其中有如下提示:
configure:2764: checking for suffix of object files
configure:2786: arm-unknown-linux-gnueabi-gcc -c conftest.c >&5
as: unrecognized option '-meabi=5'
问题:
我baidu了很久都没查出原因,各位大师有什么好的建议?
附上 config.log:
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.68.Invocation command line was
$ ../glibc-2.15/configure --prefix=/usr --host=arm-unknown-linux-gnueabi --enable-kernel=3.7.4 --enable-add-ones=ports --with-headers=/vita/sysroot/usr/include libc_cv_forced_unwind=yes libc_cv_c_cleanup=yes libc_cv_ctors_header=yes --with-threads=posix
## --------- ##
## Platform. ##
## --------- ##
hostname = test
uname -m = i686
uname -r = 3.13.0-32-generic
uname -s = Linux
uname -v = #57~precise1-Ubuntu SMP Tue Jul 15 03:50:54 UTC 2014
/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: /vita/cross-tool/bin
PATH: /vita/cross-gcc-tmp/bin
PATH: /sbin
PATH: /usr/sbin
PATH: /usr/local/bin
PATH: /usr/bin
PATH: /bin
PATH: /usr/local/games
PATH: /usr/games
## ----------- ##
## Core tests. ##
## ----------- ##
configure:2367: checking build system type
configure:2381: result: i686-pc-linux-gnu
configure:2401: checking host system type
configure:2414: result: arm-unknown-linux-gnueabi
configure:2443: checking for arm-unknown-linux-gnueabi-gcc
configure:2470: result: arm-unknown-linux-gnueabi-gcc
configure:2739: checking for C compiler version
configure:2748: arm-unknown-linux-gnueabi-gcc --version >&5
arm-unknown-linux-gnueabi-gcc (GCC) 4.7.2
Copyright (C) 2012 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:2759: $? = 0
configure:2748: arm-unknown-linux-gnueabi-gcc -v >&5
Using built-in specs.
COLLECT_GCC=arm-unknown-linux-gnueabi-gcc
COLLECT_LTO_WRAPPER=/vita/cross-gcc-tmp/libexec/gcc/arm-unknown-linux-gnueabi/4.7.2/lto-wrapper
Target: arm-unknown-linux-gnueabi
Configured with: ../gcc-4.7.2/configure --prefix=/vita/cross-gcc-tmp --target=arm-unknown-linux-gnueabi --with-sysroot=/vita/sysroot --with-newlib --enable-languages=c --with-mpfr-include=/vita/build/gcc-4.7.2/mpfr/src --with-mpfr-lib=/vita/build/gcc-build/mpfr/src/.libs --disable-shared --disable-threads --disable-decimal-float --disable-libquadmath --disable-libmudflap --disable-libgomp --disable-nls --disable-libssp
Thread model: single
gcc version 4.7.2 (GCC)
configure:2759: $? = 0
configure:2748: arm-unknown-linux-gnueabi-gcc -V >&5
arm-unknown-linux-gnueabi-gcc: error: unrecognized command line option '-V'
arm-unknown-linux-gnueabi-gcc: fatal error: no input files
compilation terminated.
configure:2759: $? = 1
configure:2748: arm-unknown-linux-gnueabi-gcc -qversion >&5
arm-unknown-linux-gnueabi-gcc: error: unrecognized command line option '-qversion'
arm-unknown-linux-gnueabi-gcc: fatal error: no input files
compilation terminated.
configure:2759: $? = 1
configure:2764: checking for suffix of object files
configure:2786: arm-unknown-linux-gnueabi-gcc -c conftest.c >&5
as: unrecognized option '-meabi=5'
configure:2790: $? = 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/"
| /* end confdefs.h.*/
|
| int
| main ()
| {
|
| ;
| return 0;
| }
configure:2804: error: in `/vita/build/glibc-build':
configure:2806: error: cannot compute suffix of object files: cannot compile
See `config.log' for more details
## ---------------- ##
## Cache variables. ##
## ---------------- ##
ac_cv_build=i686-pc-linux-gnu
ac_cv_env_CCC_set=
ac_cv_env_CCC_value=
ac_cv_env_CC_set=set
ac_cv_env_CC_value=arm-unknown-linux-gnueabi-gcc
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=
ac_cv_env_build_alias_value=
ac_cv_env_host_alias_set=set
ac_cv_env_host_alias_value=arm-unknown-linux-gnueabi
ac_cv_env_target_alias_set=
ac_cv_env_target_alias_value=
ac_cv_host=arm-unknown-linux-gnueabi
ac_cv_prog_CC=arm-unknown-linux-gnueabi-gcc
libc_cv_c_cleanup=yes
libc_cv_ctors_header=yes
libc_cv_forced_unwind=yes
## ----------------- ##
## Output variables. ##
## ----------------- ##
AR='arm-unknown-linux-gnueabi-ar'
AS='arm-unknown-linux-gnueabi-as'
ASFLAGS_config=''
AUTOCONF=''
AWK=''
BASH_SHELL=''
BISON=''
BUILD_CC='gcc'
CC='arm-unknown-linux-gnueabi-gcc'
CFLAGS=''
CPP=''
CPPFLAGS=''
CXX=''
CXXFLAGS=''
CXX_SYSINCLUDES=''
DEFINES=''
DEFS=''
ECHO_C=''
ECHO_N='-n'
ECHO_T=''
EGREP=''
GREP=''
INSTALL_DATA=''
INSTALL_INFO=''
INSTALL_PROGRAM=''
INSTALL_SCRIPT=''
KSH=''
LD=''
LDFLAGS=''
LIBGD=''
LIBOBJS=''
LIBS=''
LN_S=''
LTLIBOBJS=''
MAKE=''
MAKEINFO=''
MIG=''
MSGFMT=''
OBJCOPY=''
OBJDUMP=''
OBJEXT=''
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=''
PWD_P=''
READELF=''
RELEASE=''
SED=''
SHELL='/bin/bash'
SYSINCLUDES=''
VERSION=''
VERSIONING=''
ac_ct_CC=''
ac_ct_CXX=''
add_on_subdirs=''
add_ons=''
all_warnings=''
base_machine=''
bindir='${exec_prefix}/bin'
bindnow=''
bounded=''
build='i686-pc-linux-gnu'
build_alias=''
build_cpu='i686'
build_os='linux-gnu'
build_vendor='pc'
cross_compiling='maybe'
datadir='${datarootdir}'
datarootdir='${prefix}/share'
docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
dvidir='${docdir}'
elf=''
enable_check_abi=''
exceptions=''
exec_prefix='NONE'
fno_unit_at_a_time=''
force_install=''
gnu89_inline=''
have_libaudit=''
have_libcap=''
have_selinux=''
host='arm-unknown-linux-gnueabi'
host_alias='arm-unknown-linux-gnueabi'
host_cpu='arm'
host_os='linux-gnueabi'
host_vendor='unknown'
htmldir='${docdir}'
includedir='${prefix}/include'
infodir='${datarootdir}/info'
ldd_rewrite_script=''
libc_cv_Bgroup=''
libc_cv_as_i686=''
libc_cv_as_needed=''
libc_cv_cc_avx=''
libc_cv_cc_fma4=''
libc_cv_cc_novzeroupper=''
libc_cv_cc_sse4=''
libc_cv_cc_submachine=''
libc_cv_cc_with_libunwind=''
libc_cv_cpp_asm_debuginfo=''
libc_cv_forced_unwind='yes'
libc_cv_fpie=''
libc_cv_gcc_static_libgcc=''
libc_cv_gcc_unwind_find_fde=''
libc_cv_hashstyle=''
libc_cv_have_bash2=''
libc_cv_have_initfini=''
libc_cv_have_ksh=''
libc_cv_libgcc_s_suffix=''
libc_cv_localedir=''
libc_cv_nss_crypt=''
libc_cv_output_format=''
libc_cv_pic_default=''
libc_cv_rootsbindir=''
libc_cv_slibdir=''
libc_cv_ssp=''
libc_cv_sysconfdir=''
libc_cv_z_combreloc=''
libc_cv_z_execstack=''
libdir='${exec_prefix}/lib'
libexecdir='${exec_prefix}/libexec'
localedir='${datarootdir}/locale'
localstatedir='${prefix}/var'
mach_interface_list=''
mandir='${datarootdir}/man'
multi_arch=''
nopic_initfini=''
old_glibc_headers=''
oldest_abi=''
oldincludedir='/usr/include'
omitfp=''
pdfdir='${docdir}'
prefix='/usr'
profile=''
program_transform_name='s,x,x,'
psdir='${docdir}'
sbindir='${exec_prefix}/sbin'
shared=''
sharedstatedir='${prefix}/com'
sizeof_long_double=''
static=''
static_nss=''
subdirs=' '
submachine=''
sysconfdir='${prefix}/etc'
sysdeps_add_ons=''
sysnames=''
target_alias=''
use_default_link=''
use_ldconfig=''
with_fp=''
xcoff=''
## ----------- ##
## 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/"
configure: exit 1
印象中你要装gcc-multilib才能让gcc生成arm binary。 windoze 发表于 2017-04-04 14:28
印象中你要装gcc-multilib才能让gcc生成arm binary。
谢谢你的回复,但似乎不行......
我使用 sudo apt-get install gcc-multilib 安装了 gcc-multilib,继续使用原来的脚本编译,但还是提示同样的错误....
找到一个资料,但英文不好,不知道如何操作(在binutils或glibc-build里,都找不到 stamp目录):
gnif commented on 26 Jan 2013
I found the issue... it is because binutils was not built due to a stamp file existing to say it had built.
For those that are having trouble, try rm -rf build/* stamp/* first
原文链接:https://github.com/esden/summon-arm-toolchain/issues/30
哪位英文好的请指点一下........ 如果你想做交叉编译工具,最简单的方法还是 http://crosstool-ng.github.io/
另外也可以参考一下 http://crosstool.net/ 里面的脚本 drangon 发表于 2017-04-05 22:21
如果你想做交叉编译工具,最简单的方法还是 http://crosstool-ng.github.io/
另外也可以参考一下 http: ...
谢谢你的提醒。
我上去 http://crosstool.net/download.html,但发现里面的 kernel 都是 2.6的,是否 kernel3.0 以上的都不能做 crosstool?
本帖最后由 zylthinking 于 2017-04-06 10:14 编辑
kallytin 发表于 2017-04-04 14:12
编译glibc碰到问题,具体如下:
编译平台:ubuntu12.04-32位(i386)
看错误提示, 应该是 as 不认识 -meabi=5 选项, 那你去执行
/dest/sysroot/usr/bin/arm-unknown-linux-gnueabi-as -meabi=5 试试, 应该也是这个提示
那就是你制作的临时 gcc toolchain 出现了问题,
要么就是你 configure gcc 时使用的是你主机上的as,
你看看 ../glibc-2.15/configure 这个脚本有没有 sysroot 选项 以及 crossprefix 选项?
本帖最后由 kallytin 于 2017-04-06 12:03 编辑
zylthinking 发表于 2017-04-06 10:07
看错误提示, 应该是 as 不认识 -meabi=5 选项, 那你去执行
/dest/sysroot/usr/bin/arm-unknown-l ...
谢谢提醒。
我重新查看了一下,发现:
> arm-none-linux-gnueabi-as -meabi=5
这个是可以识别的
> as -meabi=5
as: unrecognized option '-meabi=5'
也就是编译过程中没有去 $CROSS_TOOL/bin 里去找 arm-none-linux-gnueabi-as
我重新修改glibc 脚本,在命令行中写入AS=arm-none-linux-gnueabi-as,如下(命令语句):
> CC=arm-none-linux-gnueabi-gcc AR=arm-none-linux-gnueabi-ar RANLIB=arm-none-linux-gnueabi-ranlib AS=arm-none-linux-gnueabi-as BUILD_CC=gcc ../glibc-2.15/configure --prefix=/usr --host=$TARGET --enable-kernel=3.7.4 --enable-add-ones=ports --with-headers=$SYSROOT/usr/include libc_cv_forced_unwind=yes libc_cv_c_cleanup=yes libc_cv_ctors_header=yes --with-threads=posix --with-tls libc_cv_arm_tls=yes
结果,还是提示一样的错误,还是去找as( AS=arm-none-linux-gnueabi-as没生效)........
是我的命令语句错了吗?
注:
1、此外,关于gcc的configure,如下(我看了很久都没发现问题):
../gcc-4.7.2/configure --prefix=$CROSS_GCC_TMP --target=$TARGET --with-sysroot=$SYSROOT --with-newlib --enable-languages=c --with-mpfr-include=/vita/build/gcc-4.7.2/mpfr/src --with-mpfr-lib=/vita/build/gcc-build/mpfr/src/.libs --disable-shared --disable-threads --disable-decimal-float --disable-libquadmath --disable-libmudflap --disable-libgomp --disable-nls --disable-libssp --host=$HOST --build=$BUILD || exit 1
2、
$CROSS_TOOL:存放的是 arm-none-linux-gnueabi-ar,arm-none-linux-gnueabi-as ,arm-none-linux-gnueabi-ranlib(由 binutils编译出来)
$CROSS_GCC_TMP:存放的是 arm-none-linux-gnueabi-gcc(由本机gcc, as, ld 编译出来的“过渡gcc”)
3、
PATH=/dest/cross-tool/bin:/dest/cross-gcc-tmp/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
本帖最后由 kallytin 于 2017-04-06 11:08 编辑
.....................................
本帖最后由 kallytin 于 2017-04-06 11:08 编辑
..........................
页:
[1]
2