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."