[hellogcc] Re: 关于values-Xa.so

  • From: Yao Qi <qiyaoltc@xxxxxxxxx>
  • To: hellogcc@xxxxxxxxxxxxx
  • Date: Wed, 25 Apr 2012 11:27:44 +0800

On Wed, Apr 25, 2012 at 10:47:46AM +0800, 咏勤刘 wrote:
> Hi,各位
> 
> 在编译gcc的时候,因为一个命令写错,导致gcc/config下面的一些头文件被破坏了。

什么命令错了?

> 在头文件被破坏的情况下编译gcc,出现了需要values-Xa.so的错误。
> google上大概的搜了一下感觉都是跟sparc相关的,可以我是在虚拟机上编译的,应该不是sparc结构的。
> 
> 这里不是来解决这个问题的,问题已经解决。
> 不过还是不能明白values-Xa.so是做什么用的,为什么需要这个values-Xa.
> 所以这封信只是针对values-Xa的讨论和学习。
> 
> *下面是编译时候出的错误:*
> lfs:/mnt/lfs/build/gcc_pass2$ make
> make[1]: Entering directory `/mnt/lfs/build/gcc_pass2'
> make[2]: Entering directory `/mnt/lfs/build/gcc_pass2/libiberty'
> make[3]: Entering directory `/mnt/lfs/build/gcc_pass2/libiberty/testsuite'
> make[3]: Nothing to be done for `all'.
> make[3]: Leaving directory `/mnt/lfs/build/gcc_pass2/libiberty/testsuite'
> make[2]: Leaving directory `/mnt/lfs/build/gcc_pass2/libiberty'
> make[2]: Entering directory `/mnt/lfs/build/gcc_pass2/fixincludes'
> make[2]: Nothing to be done for `all'.
> make[2]: Leaving directory `/mnt/lfs/build/gcc_pass2/fixincludes'
> make[2]: Entering directory `/mnt/lfs/build/gcc_pass2/gmp'
> make  all-recursive
> make[3]: Entering directory `/mnt/lfs/build/gcc_pass2/gmp'
> Making all in tests
> make[4]: Entering directory `/mnt/lfs/build/gcc_pass2/gmp/tests'
> Making all in .
> make[5]: Entering directory `/mnt/lfs/build/gcc_pass2/gmp/tests'
> make[5]: Nothing to be done for `all-am'.
> make[5]: Leaving directory `/mnt/lfs/build/gcc_pass2/gmp/tests'
> Making all in devel
> make[5]: Entering directory `/mnt/lfs/build/gcc_pass2/gmp/tests/devel'
> make[5]: Nothing to be done for `all'.
> make[5]: Leaving directory `/mnt/lfs/build/gcc_pass2/gmp/tests/devel'
> Making all in mpn
> make[5]: Entering directory `/mnt/lfs/build/gcc_pass2/gmp/tests/mpn'
> make[5]: Nothing to be done for `all'.
> make[5]: Leaving directory `/mnt/lfs/build/gcc_pass2/gmp/tests/mpn'
> Making all in mpz
> make[5]: Entering directory `/mnt/lfs/build/gcc_pass2/gmp/tests/mpz'
> make[5]: Nothing to be done for `all'.
> make[5]: Leaving directory `/mnt/lfs/build/gcc_pass2/gmp/tests/mpz'
> Making all in mpq
> make[5]: Entering directory `/mnt/lfs/build/gcc_pass2/gmp/tests/mpq'
> make[5]: Nothing to be done for `all'.
> make[5]: Leaving directory `/mnt/lfs/build/gcc_pass2/gmp/tests/mpq'
> Making all in mpf
> make[5]: Entering directory `/mnt/lfs/build/gcc_pass2/gmp/tests/mpf'
> make[5]: Nothing to be done for `all'.
> make[5]: Leaving directory `/mnt/lfs/build/gcc_pass2/gmp/tests/mpf'
> Making all in rand
> make[5]: Entering directory `/mnt/lfs/build/gcc_pass2/gmp/tests/rand'
> make[5]: Nothing to be done for `all'.
> make[5]: Leaving directory `/mnt/lfs/build/gcc_pass2/gmp/tests/rand'
> Making all in misc
> make[5]: Entering directory `/mnt/lfs/build/gcc_pass2/gmp/tests/misc'
> make[5]: Nothing to be done for `all'.
> make[5]: Leaving directory `/mnt/lfs/build/gcc_pass2/gmp/tests/misc'
> Making all in cxx
> make[5]: Entering directory `/mnt/lfs/build/gcc_pass2/gmp/tests/cxx'
> make[5]: Nothing to be done for `all'.
> make[5]: Leaving directory `/mnt/lfs/build/gcc_pass2/gmp/tests/cxx'
> Making all in mpbsd
> make[5]: Entering directory `/mnt/lfs/build/gcc_pass2/gmp/tests/mpbsd'
> make[5]: Nothing to be done for `all'.
> make[5]: Leaving directory `/mnt/lfs/build/gcc_pass2/gmp/tests/mpbsd'
> make[4]: Leaving directory `/mnt/lfs/build/gcc_pass2/gmp/tests'
> Making all in mpn
> make[4]: Entering directory `/mnt/lfs/build/gcc_pass2/gmp/mpn'
> make[4]: Nothing to be done for `all'.
> make[4]: Leaving directory `/mnt/lfs/build/gcc_pass2/gmp/mpn'
> Making all in mpz
> make[4]: Entering directory `/mnt/lfs/build/gcc_pass2/gmp/mpz'
> make[4]: Nothing to be done for `all'.
> make[4]: Leaving directory `/mnt/lfs/build/gcc_pass2/gmp/mpz'
> Making all in mpq
> make[4]: Entering directory `/mnt/lfs/build/gcc_pass2/gmp/mpq'
> make[4]: Nothing to be done for `all'.
> make[4]: Leaving directory `/mnt/lfs/build/gcc_pass2/gmp/mpq'
> Making all in mpf
> make[4]: Entering directory `/mnt/lfs/build/gcc_pass2/gmp/mpf'
> make[4]: Nothing to be done for `all'.
> make[4]: Leaving directory `/mnt/lfs/build/gcc_pass2/gmp/mpf'
> Making all in printf
> make[4]: Entering directory `/mnt/lfs/build/gcc_pass2/gmp/printf'
> make[4]: Nothing to be done for `all'.
> make[4]: Leaving directory `/mnt/lfs/build/gcc_pass2/gmp/printf'
> Making all in scanf
> make[4]: Entering directory `/mnt/lfs/build/gcc_pass2/gmp/scanf'
> make[4]: Nothing to be done for `all'.
> make[4]: Leaving directory `/mnt/lfs/build/gcc_pass2/gmp/scanf'
> Making all in cxx
> make[4]: Entering directory `/mnt/lfs/build/gcc_pass2/gmp/cxx'
> make[4]: Nothing to be done for `all'.
> make[4]: Leaving directory `/mnt/lfs/build/gcc_pass2/gmp/cxx'
> Making all in mpbsd
> make[4]: Entering directory `/mnt/lfs/build/gcc_pass2/gmp/mpbsd'
> make[4]: Nothing to be done for `all'.
> make[4]: Leaving directory `/mnt/lfs/build/gcc_pass2/gmp/mpbsd'
> Making all in demos
> make[4]: Entering directory `/mnt/lfs/build/gcc_pass2/gmp/demos'
> Making all in calc
> make[5]: Entering directory `/mnt/lfs/build/gcc_pass2/gmp/demos/calc'
> make  all-am
> make[6]: Entering directory `/mnt/lfs/build/gcc_pass2/gmp/demos/calc'
> make[6]: Nothing to be done for `all-am'.
> make[6]: Leaving directory `/mnt/lfs/build/gcc_pass2/gmp/demos/calc'
> make[5]: Leaving directory `/mnt/lfs/build/gcc_pass2/gmp/demos/calc'
> Making all in expr
> make[5]: Entering directory `/mnt/lfs/build/gcc_pass2/gmp/demos/expr'
> make[5]: Nothing to be done for `all'.
> make[5]: Leaving directory `/mnt/lfs/build/gcc_pass2/gmp/demos/expr'
> make[5]: Entering directory `/mnt/lfs/build/gcc_pass2/gmp/demos'
> make[5]: Nothing to be done for `all-am'.
> make[5]: Leaving directory `/mnt/lfs/build/gcc_pass2/gmp/demos'
> make[4]: Leaving directory `/mnt/lfs/build/gcc_pass2/gmp/demos'
> Making all in tune
> make[4]: Entering directory `/mnt/lfs/build/gcc_pass2/gmp/tune'
> make[4]: Nothing to be done for `all'.
> make[4]: Leaving directory `/mnt/lfs/build/gcc_pass2/gmp/tune'
> Making all in doc
> make[4]: Entering directory `/mnt/lfs/build/gcc_pass2/gmp/doc'
> make[4]: Nothing to be done for `all'.
> make[4]: Leaving directory `/mnt/lfs/build/gcc_pass2/gmp/doc'
> make[4]: Entering directory `/mnt/lfs/build/gcc_pass2/gmp'
> make[4]: Nothing to be done for `all-am'.
> make[4]: Leaving directory `/mnt/lfs/build/gcc_pass2/gmp'
> make[3]: Leaving directory `/mnt/lfs/build/gcc_pass2/gmp'
> make[2]: Leaving directory `/mnt/lfs/build/gcc_pass2/gmp'
> make[2]: Entering directory `/mnt/lfs/build/gcc_pass2/intl'
> make[2]: Nothing to be done for `all'.
> make[2]: Leaving directory `/mnt/lfs/build/gcc_pass2/intl'
> make[2]: Entering directory `/mnt/lfs/build/gcc_pass2/mpfr'
> Making all in tests
> make[3]: Entering directory `/mnt/lfs/build/gcc_pass2/mpfr/tests'
> make[3]: Nothing to be done for `all'.
> make[3]: Leaving directory `/mnt/lfs/build/gcc_pass2/mpfr/tests'
> make[3]: Entering directory `/mnt/lfs/build/gcc_pass2/mpfr'
> make[3]: Nothing to be done for `all-am'.
> make[3]: Leaving directory `/mnt/lfs/build/gcc_pass2/mpfr'
> make[2]: Leaving directory `/mnt/lfs/build/gcc_pass2/mpfr'
> make[2]: Entering directory `/mnt/lfs/build/gcc_pass2/mpc'
> make  all-recursive
> make[3]: Entering directory `/mnt/lfs/build/gcc_pass2/mpc'
> Making all in src
> make[4]: Entering directory `/mnt/lfs/build/gcc_pass2/mpc/src'
> make[4]: Nothing to be done for `all'.
> make[4]: Leaving directory `/mnt/lfs/build/gcc_pass2/mpc/src'
> Making all in tests
> make[4]: Entering directory `/mnt/lfs/build/gcc_pass2/mpc/tests'
> make[4]: Nothing to be done for `all'.
> make[4]: Leaving directory `/mnt/lfs/build/gcc_pass2/mpc/tests'
> Making all in doc
> make[4]: Entering directory `/mnt/lfs/build/gcc_pass2/mpc/doc'
> make[4]: Nothing to be done for `all'.
> make[4]: Leaving directory `/mnt/lfs/build/gcc_pass2/mpc/doc'
> make[4]: Entering directory `/mnt/lfs/build/gcc_pass2/mpc'
> make[4]: Nothing to be done for `all-am'.
> make[4]: Leaving directory `/mnt/lfs/build/gcc_pass2/mpc'
> make[3]: Leaving directory `/mnt/lfs/build/gcc_pass2/mpc'
> make[2]: Leaving directory `/mnt/lfs/build/gcc_pass2/mpc'
> make[2]: Entering directory
> `/mnt/lfs/build/gcc_pass2/build-i686-pc-linux-gnu/libiberty'
> make[3]: Entering directory
> `/mnt/lfs/build/gcc_pass2/build-i686-pc-linux-gnu/libiberty/testsuite'
> make[3]: Nothing to be done for `all'.
> make[3]: Leaving directory
> `/mnt/lfs/build/gcc_pass2/build-i686-pc-linux-gnu/libiberty/testsuite'
> make[2]: Leaving directory
> `/mnt/lfs/build/gcc_pass2/build-i686-pc-linux-gnu/libiberty'
> make[2]: Entering directory
> `/mnt/lfs/build/gcc_pass2/build-i686-pc-linux-gnu/fixincludes'
> make[2]: Nothing to be done for `all'.
> make[2]: Leaving directory
> `/mnt/lfs/build/gcc_pass2/build-i686-pc-linux-gnu/fixincludes'
> make[2]: Entering directory `/mnt/lfs/build/gcc_pass2/zlib'
> true "AR_FLAGS=rc" "CC_FOR_BUILD=i686-lfs-linux-gnu-gcc -B/tools/lib"
> "CFLAGS=-g -O2" "CXXFLAGS=" "CFLAGS_FOR_BUILD=-g -O2" "CFLAGS_FOR_TARGET=-g
> -O2" "INSTALL=/usr/bin/install -c" "INSTALL_DATA=/usr/bin/install -c -m
> 644" "INSTALL_PROGRAM=/usr/bin/install -c" "INSTALL_SCRIPT=/usr/bin/install
> -c" "LDFLAGS=" "LIBCFLAGS=-g -O2" "LIBCFLAGS_FOR_TARGET=-g -O2" "MAKE=make"
> "MAKEINFO=makeinfo --split-size=5000000 --split-size=5000000 " "PICFLAG="
> "PICFLAG_FOR_TARGET=" "SHELL=/bin/sh" "EXPECT=expect" "RUNTEST=runtest"
> "RUNTESTFLAGS=" "exec_prefix=/tools" "infodir=/tools/share/info"
> "libdir=/tools/lib" "prefix=/tools" "tooldir=/tools/i686-pc-linux-gnu"
> "AR=i686-lfs-linux-gnu-ar" "AS=as" "CC=i686-lfs-linux-gnu-gcc -B/tools/lib"
> "CXX=g++"
> "LD=/mnt/lfs/tools/bin/../lib/gcc/i686-lfs-linux-gnu/4.5.1/../../../../i686-lfs-linux-gnu/bin/ld"
> "LIBCFLAGS=-g -O2" "NM=nm" "PICFLAG=" "RANLIB=i686-lfs-linux-gnu-ranlib"
> "DESTDIR=" DO=all multi-do # make
> make[2]: Leaving directory `/mnt/lfs/build/gcc_pass2/zlib'
> make[2]: Entering directory `/mnt/lfs/build/gcc_pass2/libcpp'
> make[2]: Nothing to be done for `all'.
> make[2]: Leaving directory `/mnt/lfs/build/gcc_pass2/libcpp'
> make[2]: Entering directory `/mnt/lfs/build/gcc_pass2/libdecnumber'
> make[2]: Nothing to be done for `all'.
> make[2]: Leaving directory `/mnt/lfs/build/gcc_pass2/libdecnumber'
> make[2]: Entering directory `/mnt/lfs/build/gcc_pass2/gcc'
> make[2]: Leaving directory `/mnt/lfs/build/gcc_pass2/gcc'
> Checking multilib configuration for libgcc...
> make[2]: Entering directory
> `/mnt/lfs/build/gcc_pass2/i686-pc-linux-gnu/libgcc'
> # If this is the top-level multilib, build all the other
> # multilibs.
> # Early copyback; see "all" above for the rationale.  The
> # early copy is necessary so that the gcc -B options find
> # the right startup files when linking shared libgcc.
> /bin/sh
> /mnt/lfs/build/decompress_src/gcc-4.5.1_pass2/libgcc/../mkinstalldirs
> ../.././gcc
> parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o crtprec32.o
> crtprec64.o crtprec80.o crtfastmath.o";                              \
>         for file in $parts; do                                  \
>           rm -f ../.././gcc/$file;              \
>           /usr/bin/install -c -m 644 $file ../.././gcc/;        \
>         done
> # @multilib_flags@ is still needed because this may use
> # /mnt/lfs/build/gcc_pass2/./gcc/xgcc -B/mnt/lfs/build/gcc_pass2/./gcc/
> -B/tools/i686-pc-linux-gnu/bin/ -B/tools/i686-pc-linux-gnu/lib/ -isystem
> /tools/i686-pc-linux-gnu/include -isystem
> /tools/i686-pc-linux-gnu/sys-include    and -O2  -g -O2 -DIN_GCC
>  -fomit-frame-pointer -W -Wall -Wwrite-strings -Wcast-qual
> -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition  -isystem
> ./include  -fPIC -g -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2
> -D__GCC_FLOAT_NOT_NEEDED  directly.
> # @multilib_dir@ is not really necessary, but sometimes it has
> # more uses than just a directory name.
> /bin/sh
> /mnt/lfs/build/decompress_src/gcc-4.5.1_pass2/libgcc/../mkinstalldirs .
> /mnt/lfs/build/gcc_pass2/./gcc/xgcc -B/mnt/lfs/build/gcc_pass2/./gcc/
> -B/tools/i686-pc-linux-gnu/bin/ -B/tools/i686-pc-linux-gnu/lib/ -isystem
> /tools/i686-pc-linux-gnu/include -isystem
> /tools/i686-pc-linux-gnu/sys-include    -O2  -g -O2 -DIN_GCC
>  -fomit-frame-pointer -W -Wall -Wwrite-strings -Wcast-qual
> -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition  -isystem
> ./include  -fPIC -g -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2
> -D__GCC_FLOAT_NOT_NEEDED  -shared -nodefaultlibs -Wl,--soname=libgcc_s.so.1
> -Wl,--version-script=libgcc.map -o ./libgcc_s.so.1.tmp -g -O2 -B./
> _muldi3_s.o _negdi2_s.o _lshrdi3_s.o _ashldi3_s.o _ashrdi3_s.o _cmpdi2_s.o
> _ucmpdi2_s.o _clear_cache_s.o _enable_execute_stack_s.o _trampoline_s.o
> __main_s.o _absvsi2_s.o _absvdi2_s.o _addvsi3_s.o _addvdi3_s.o _subvsi3_s.o
> _subvdi3_s.o _mulvsi3_s.o _mulvdi3_s.o _negvsi2_s.o _negvdi2_s.o _ctors_s.o
> _ffssi2_s.o _ffsdi2_s.o _clz_s.o _clzsi2_s.o _clzdi2_s.o _ctzsi2_s.o
> _ctzdi2_s.o _popcount_tab_s.o _popcountsi2_s.o _popcountdi2_s.o
> _paritysi2_s.o _paritydi2_s.o _powisf2_s.o _powidf2_s.o _powixf2_s.o
> _powitf2_s.o _mulsc3_s.o _muldc3_s.o _mulxc3_s.o _multc3_s.o _divsc3_s.o
> _divdc3_s.o _divxc3_s.o _divtc3_s.o _bswapsi2_s.o _bswapdi2_s.o
> _fixunssfsi_s.o _fixunsdfsi_s.o _fixunsxfsi_s.o _fixsfdi_s.o _fixdfdi_s.o
> _fixxfdi_s.o _fixunssfdi_s.o _fixunsdfdi_s.o _fixunsxfdi_s.o _floatdisf_s.o
> _floatdidf_s.o _floatdixf_s.o _floatundisf_s.o _floatundidf_s.o
> _floatundixf_s.o _divdi3_s.o _moddi3_s.o _udivdi3_s.o _umoddi3_s.o
> _udiv_w_sdiv_s.o _udivmoddi4_s.o addtf3_s.o divtf3_s.o eqtf2_s.o getf2_s.o
> letf2_s.o multf3_s.o negtf2_s.o subtf3_s.o unordtf2_s.o fixtfsi_s.o
> fixunstfsi_s.o floatsitf_s.o floatunsitf_s.o fixtfdi_s.o fixunstfdi_s.o
> floatditf_s.o floatunditf_s.o extendsftf2_s.o extenddftf2_s.o
> extendxftf2_s.o trunctfsf2_s.o trunctfdf2_s.o trunctfxf2_s.o tf-signs_s.o
> unwind-dw2_s.o unwind-dw2-fde-glibc_s.o unwind-sjlj_s.o gthr-gnat_s.o
> unwind-c_s.o emutls_s.o -lc && rm -f ./libgcc_s.so && if [ -f
> ./libgcc_s.so.1 ]; then mv -f ./libgcc_s.so.1 ./libgcc_s.so.1.backup; else
> true; fi && mv ./libgcc_s.so.1.tmp ./libgcc_s.so.1 && ln -s libgcc_s.so.1
> ./libgcc_s.so
> /tools/i686-pc-linux-gnu/bin/ld: values-Xa.o: No such file: No such file or
> directory
> collect2: ld returned 1 exit status
> make[2]: *** [libgcc_s.so] Error 1
> make[2]: Leaving directory
> `/mnt/lfs/build/gcc_pass2/i686-pc-linux-gnu/libgcc'
> make[1]: *** [all-target-libgcc] Error 2
> make[1]: Leaving directory `/mnt/lfs/build/gcc_pass2'
> make: *** [all] Error 2
> lfs:/mnt/lfs/build/gcc_pass2$
> 

-- 
Yao Qi <qiyaoltc AT gmail DOT com>

F.S. Fitzgerald to Hemingway:
        "Ernest, the rich are different from us."
Hemingway:
        "Yes.  They have more money."

Other related posts: