感谢支持
我们一直在努力

在Ubuntu上编译GCC会到的问题及解决方法

这段时间,我在用软件实现一个3D图形库,因为一些原因,想要使用c++11中的东西。被迫自己编译gcc4.7. 在这个过程中传到了很多的问题,经过不懈的努力终于是成功编译出来了,现在记录一下,算作个备份。


我是在Ubuntu11.10上编译的.会到了如下错误


1.configure错误,说没有gmp,什么的。


2. undefined reference to `lexer_line’


3. fatal error: bits/predefs.h :File or directory not found


4. ld can’t find crti.o


相应的解决如下:


1.  apt-get install libgmp10-dev libmpfr-dev libmpc-dev


2.  apt-get install flex bison


3.  4. 在网上下了一个编译脚本,直接运行就行了


下面是且这个脚本编译的过程:


1. 按照上面1和2安装好gmp,等等;


2. 到官网上下载代码放在 $HOME/src/gcc-4.7/files/中


  3. 下载附件中的脚本,修改PKG_SNAPSHOT_VER和TARGET_SYSTEM_TYPE,然后直接运行即可。


  4. 按脚本运行的提示完成最后的工作(比如建立符号链接啊什么的)


脚本如下:



  1. #!/bin/sh  

  2.   

  3. #     Filename: build_gcc-snapshot.sh  

  4. #      Created: 15-Mar-2011  

  5. #        RunAs: user or root  

  6. # Last Changed: 09-Oct-2011  

  7.   

  8. export LANG=C  

  9. export LC_ALL=C  

  10.   

  11. PKG_NAME=“gcc”  

  12. PKG_VER=“4.7”  

  13. PKG_SNAPSHOT_VER=“4.7-20120128”  

  14.   

  15. BASE_DIR=“$HOME/src/${PKG_NAME}-${PKG_VER}”  

  16. SRC_DIR=“${BASE_DIR}/${PKG_NAME}-${PKG_SNAPSHOT_VER}”  

  17. BUILD_DIR=“${BASE_DIR}/gcc-build”  

  18.   

  19. DL_DIR=“${BASE_DIR}/files”  

  20. DL_FILE=“${PKG_NAME}-${PKG_SNAPSHOT_VER}.tar.bz2”  

  21.   

  22. PATCHES_DIR=“${BASE_DIR}/patches”  

  23.   

  24. BUILD_SYSTEM_TYPE=$(dpkg-architecture -qDEB_BUILD_GNU_TYPE)  

  25. HOST_SYSTEM_TYPE=$(dpkg-architecture -qDEB_HOST_GNU_TYPE)  

  26. TARGET_SYSTEM_TYPE=“x86_64-linux-gnu”  

  27.   

  28. HOST_SYSTEM_MULTIARCH_TYPE=$(dpkg-architecture -qDEB_HOST_MULTIARCH)  

  29.   

  30. PREFIX=“/opt/${PKG_NAME}-${PKG_VER}”  

  31.   

  32. LIB_DIR=“${PREFIX}/lib”  

  33. LIB_EXEC_DIR=“${PREFIX}/lib”  

  34.   

  35. BUILD_LOG_FILE=“${BASE_DIR}/make.log”  

  36.   

  37. GCC_VER_FOR_BUILD=“4.6”  

  38. CC_FOR_BUILD=“gcc-${GCC_VER_FOR_BUILD}”  

  39. CXX_FOR_BUILD=“g++-${GCC_VER_FOR_BUILD}”  

  40. CPP_FOR_BUILD=“cpp-${GCC_VER_FOR_BUILD}”  

  41. export CC=“${CC_FOR_BUILD}” CXX=“${CXX_FOR_BUILD}” CPP=“${CPP_FOR_BUILD}”  

  42. echo “##### CC  … $CC”  

  43. echo “##### CXX … $CXX”  

  44. echo “##### CPP … $CPP”  

  45.   

  46. MULTIARCH_FLAGS=“-B/usr/lib/${HOST_SYSTEM_MULTIARCH_TYPE} -I/usr/include/${HOST_SYSTEM_MULTIARCH_TYPE}”  

  47.   

  48. export CFLAGS=“-g -O2”  

  49. export CXXFLAGS=“${CFLAGS}”  

  50. export CFLAGS_FOR_TARGET=“${CFLAGS} ${MULTIARCH_FLAGS}”  

  51. export CXXFLAGS_FOR_TARGET=“${CXXFLAGS} ${MULTIARCH_FLAGS}”  

  52.   

  53. ##LD_PRELOAD_FOR_BUILD=“${PREFIX}/lib/libgcc_s.so.1”  

  54. ##export LD_PRELOAD=${LD_PRELOAD_FOR_BUILD}  

  55.   

  56. MAKE_JOBS=“3”  

  57. echo “##### MAKE_JOBS … ${MAKE_JOBS}”  

  58.   

  59. test -e ${BASE_DIR} || mkdir -p ${BASE_DIR}  

  60. echo “##### Base directory … ${BASE_DIR}”  

  61.   

  62. echo “##### Unpacking ${DL_FILE} …”  

  63. tar -xf ${DL_DIR}/${DL_FILE} -C ${BASE_DIR}  

  64. echo “##### Finished unpacking.”  

  65.   

  66. test -e ${BUILD_DIR} || mkdir -p ${BUILD_DIR}  

  67. cd ${BUILD_DIR}  

  68. echo “##### Build directory … $PWD”  

  69.   

  70. # HELP: http://www.linuxfromscratch.org/lfs/view/development/chapter06/gcc.html  

  71. # NOTE: apt-get install libgmp10-dev libmpfr-dev libmpc-dev  

  72. echo “##### Configuring gcc-build …”  

  73. ../${PKG_NAME}-${PKG_SNAPSHOT_VER}/configure \  

  74.     –prefix=${PREFIX} \  

  75.     –libdir=${LIB_DIR} \  

  76.     –libexecdir=${LIB_EXEC_DIR} \  

  77.     –program-suffix=-${PKG_VER} \  

  78.     –enable-clocale=gnu \  

  79.     –enable-languages=c,c++ \  

  80.     –enable-shared \  

  81.     –enable-threads=posix \  

  82.     –disable-bootstrap \  

  83.     –disable-libssp \  

  84.     –disable-multilib \  

  85.     –disable-nls \  

  86.     –with-system-zlib \  

  87.     –without-cloog \  

  88.     –without-ppl \  

  89.     –with-arch-32=i586 –with-tune=generic \  

  90.     –build=${BUILD_SYSTEM_TYPE} –host=${HOST_SYSTEM_TYPE} –target=${TARGET_SYSTEM_TYPE}  

  91. echo “##### Finished configuring.”  

  92.   

  93. echo “##### Compiling gcc-build …”  

  94. make FLAGS_FOR_TARGET=“${FLAGS_FOR_TARGET} ${MULTIARCH_FLAGS}” -j${MAKE_JOBS} 2>&1 | tee ${BUILD_LOG_FILE}  

  95. echo “##### Finished compiling.”  

  96.   

  97. echo “NOTE #1: Before installing your shiny new gcc run the gcc-testsuite to check your build is OK!”  

  98.   

  99. echo “NOTE #2: Don’t forget to generate symlinks in system’s bin directory!”  

  100. echo “EXAMPLE: sudo ln -sf ${PREFIX}/bin/${PKG_NAME}-${PKG_VER} /usr/bin/${PKG_NAME}-${PKG_VER}”  

  101.   

  102. echo “NOTE #3: Don’t forget to add ${PREFIX}/lib’ to /etc/ld.so.conf.d/${TARGET_SYSTEM_TYPE}.conf!”  

  103. echo “EXAMPLE: sudo ldconfig -v”  

赞(0) 打赏
转载请注明出处:服务器评测 » 在Ubuntu上编译GCC会到的问题及解决方法
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏