gcc 5.2.0 编译安装笔记-20151110
生活随笔
收集整理的這篇文章主要介紹了
gcc 5.2.0 编译安装笔记-20151110
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
**轉載請注明出處**
by.haunying3
2、創建目錄并下載文件 mkdir gcc wget?ftp://mirrors-usa.go-parts.com/gcc/releases/gcc-5.2.0/gcc-5.2.0.tar.bz2
3、解壓 tar -xjvf gcc-5.2.0.tar.bz2 4、安裝依賴包【假設已安裝——第6步中沒有報缺失下列庫錯誤,請跳過此步】 a、安裝GMP 下載[https://gmplib.org/] wget?https://gmplib.org/download/gmp/gmp-6.1.0.tar.bz2 解壓 tar -xjvf gmp-6.1.0.tar.bz2 編譯并安裝 cd gmp-6.1.0 mkdir?/usr/local/gmp-6.1.0 ./configure --prefix=/usr/local/gmp-6.1.0?--enable-cxx make -j 4 make check sudo make install b、安裝MPFR 下載[http://www.mpfr.org/] wget?http://www.mpfr.org/mpfr-current/mpfr-3.1.3.tar.gz 解壓 tar -xzvf mpfr-3.1.3.tar.gz 編譯并安裝 cd mpfr-3.1.3 mkdir?/usr/local/mpfr-3.1.3 ./configure --prefix=/usr/local/mpfr-3.1.3 --with-gmp=/usr/local/gmp-6.1.0 注:指定默認路徑--with-gmp-include=/usr/local/gmp-6.1.0/include --with-gmp-lib=/usr/local/gmp-6.1.0/lib make -j 4 make check sudo make install c、安裝MPC 下載[http://www.multiprecision.org/index.php?prog=mpc&page=download] wget?ftp://ftp.gnu.org/gnu/mpc/mpc-1.0.3.tar.gz 解壓 tar -xzvf mpc-1.0.3.tar.gz 編譯并安裝 cd mpc-1.0.3 mkdir /usr/local/mpc-1.0.3 ./configure --prefix=/usr/local/mpc-1.0.3 --with-gmp=/usr/local/gmp-6.1.0 --with-mpfr=/usr/local/mpfr-3.1.3 make -j 4 make check sudo make install export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/gmp-6.1.0/lib:?/usr/local/mpfr-3.1.3/lib:/usr/local/mpc-1.0.3/lib【重新啟動失效&僅僅對當前用戶有效】
或用以下方法【對全部用戶永久生效】 vi /etc/ld.so.conf 將以下內容填入 /usr/local/gmp-6.1.0/lib /usr/local/mpfr-3.1.3/lib /usr/local/mpc-1.0.3/lib 退出運行ldconfig 5、安裝gcc make check 依賴項autogen【假設 which?autogen存在則跳過此步】 下載[http://www.gnu.org/software/autogen/]
wget?http://ftp.gnu.org/gnu/autogen/rel5.18.6/autogen-5.18.6.tar.gz
解壓
tar -xzvf autogen-5.18.6.tar.gz
cd autogen-5.18.6
mkdir /usr/local/autogen-5.18.6 安裝autogen依賴項guile【忍無可忍,強烈吐槽linux的依賴關系】 wget?ftp://ftp.gnu.org/gnu/guile/guile-2.0.7.tar.xz xz?-dk?guile-2.0.7.tar.xz tar?-xvf?guile-2.0.7.tar cd?guile-2.0.7 yum?search?Libtool yum?install?libtool-ltdl-devel.x86_64 yum?search?libunistring yum?install?libunistring-devel.x86_64 yum?search?libffi yum?install?libffi-devel.x86_64 yum?search?gc yum?install?gc-devel.x86_64
mkdir?/usr/local/guile-2.0.7 【由于非默認安裝gmp跟configure兼容問題。此處須要安裝一個默認的gmp:yum?install?gmp-devel.x86_64——不會對編譯gcc的產生影響(手動指定)】 ./configure?--prefix=/usr/local/guile-2.0.7 make?-j make?check【有幾個錯誤。只是已經麻木,忽略】 make?install vi?/etc/ld.so.conf 增加 /usr/local/guile-2.0.7/lib 運行 ldconfig sudo?update-alternatives?--install?/usr/bin/guile?guile?/usr/local/guile-2.0.7/bin/guile?30 杯具的是,不能通過--with-guile=/usr/local/guile-2.0.7/指定編譯選項,僅僅能通過下面方式改動 vi?/etc/profile 加入 export?PKG_CONFIG_PATH=/usr/local/guile-2.0.7/lib/pkgconfig:$PKG_CONFIG_PATH 運行 source?/etc/profile ?./configure?--prefix=/usr/local/autogen-5.18.6
make -j 4
make check
make install
sudo?update-alternatives?--install?/usr/bin/autogen?autogen?/usr/local/autogen-5.18.6/bin/autogen?30 6、創建數據文件夾并編譯 cd ..
mkdir gcc_5.2_build
cd gcc_5.2_build
mkdir?/usr/local/gcc-5.2.0
../gcc-5.2.0/configure --prefix=/usr/local/gcc-5.2.0?-enable-threads=posix?--enable-checking=release --enable-languages=c,c++?--enable-__cxa_atexit?--disable-multilib?--build=x86_64-redhat-linux?--with-gmp=/usr/local/gmp-6.1.0? --with-mpfr=/usr/local/mpfr-3.1.3?--with-mpc=/usr/local/mpc-1.0.3
make -j 4
make?check make install 7、建立軟連接 假設/usr/bin下的gcc等文件是實體文件而不是鏈接則須要【否則用update-alternatives加入優先級較低的老版本號路徑】 mv?gcc?gcc-4.4.7
mv?g++?g++-4.4.7
mv?c++?c++-4.4.7
mv?cpp?cpp-4.4.7 然后運行 sudo update-alternatives --install /usr/bin/gcc gcc /usr/local/gcc-5.2.0/bin/x86_64-redhat-linux-gcc 30 sudo?update-alternatives?--install?/usr/bin/g++?g++?/usr/local/gcc-5.2.0/bin/x86_64-redhat-linux-g++?30 sudo?update-alternatives?--install?/usr/bin/c++?c++?/usr/local/gcc-5.2.0/bin/x86_64-redhat-linux-c++?30 sudo?update-alternatives?--install?/usr/bin/cpp?cpp?/usr/local/gcc-5.2.0/bin/cpp?30 8、加入庫文件路徑【黃色為分析過程】 cd /usr/local/gcc-5.2.0 find ./ -name *.so* ./libexec/gcc/x86_64-unknown-linux-gnu/5.2.0/liblto_plugin.so.0 ./libexec/gcc/x86_64-unknown-linux-gnu/5.2.0/liblto_plugin.so ./libexec/gcc/x86_64-unknown-linux-gnu/5.2.0/liblto_plugin.so.0.0.0 ./lib64/libgomp-plugin-host_nonshm.so.1.0.0 ./lib64/libvtv.so.0 ./lib64/libssp.so.0.0.0 ./lib64/libgcc_s.so ./lib64/libitm.so.1.0.0 ./lib64/libcc1.so.0 ./lib64/libstdc++.so.6.0.21-gdb.py ./lib64/libssp.so.0 ./lib64/libstdc++.so.6 ./lib64/libvtv.so.0.0.0 ./lib64/libatomic.so.1.1.0 ./lib64/libgomp.so.1.0.0 ./lib64/libgomp-plugin-host_nonshm.so ./lib64/libubsan.so ./lib64/libcc1.so.0.0.0 ./lib64/libgomp-plugin-host_nonshm.so.1 ./lib64/liblsan.so.0 ./lib64/libitm.so ./lib64/libquadmath.so ./lib64/libgcc_s.so.1 ./lib64/libquadmath.so.0.0.0 ./lib64/libquadmath.so.0 ./lib64/libcilkrts.so ./lib64/libasan.so ./lib64/libatomic.so.1 ./lib64/libasan.so.2 ./lib64/libasan.so.2.0.0 ./lib64/libcilkrts.so.5.0.0 ./lib64/libcilkrts.so.5 ./lib64/libtsan.so.0.0.0 ./lib64/libstdc++.so.6.0.21 ./lib64/libgomp.so.1 ./lib64/libssp.so ./lib64/libubsan.so.0 ./lib64/libatomic.so ./lib64/libitm.so.1 ./lib64/libstdc++.so ./lib64/libtsan.so.0 ./lib64/libtsan.so ./lib64/libcc1.so ./lib64/liblsan.so.0.0.0 ./lib64/liblsan.so ./lib64/libvtv.so ./lib64/libgomp.so ./lib64/libubsan.so.0.0.0 ./lib/gcc/x86_64-unknown-linux-gnu/5.2.0/plugin/libcc1plugin.so.0.0.0 ./lib/gcc/x86_64-unknown-linux-gnu/5.2.0/plugin/libcc1plugin.so ./lib/gcc/x86_64-unknown-linux-gnu/5.2.0/plugin/libcc1plugin.so.0 打開配置文件 vi /etc/ld.so.conf 將路徑寫入 /usr/local/gcc-5.2.0/lib64 /usr/local/gcc-5.2.0/lib/gcc/x86_64-unknown-linux-gnu/5.2.0/plugin /usr/local/gcc-5.2.0/libexec/gcc/x86_64-unknown-linux-gnu/5.2.0 運行 ldconfig
ldconfig:?/usr/local/gcc-5.2.0/lib64/libstdc++.so.6.0.21-gdb.py?不是?ELF?文件?-?它起始的魔數錯誤。
mv?/usr/local/gcc-5.2.0/lib64/libstdc++.so.6.0.21-gdb.py?/usr/local/gcc-5.2.0/lib64/bak_libstdc++.so.6.0.21-gdb.py ldconfig 驗證 ldd?mysql【用戶程序已經切換到新庫】 ? ? ? ? linux-vdso.so.1 => ?(0x00007fffb5bff000) ? ? ? ? libncursesw.so.5 => /lib64/libncursesw.so.5 (0x00007f2c6be7f000) ? ? ? ? libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f2c6bc61000) ? ? ? ? libmysqlclient.so.16 => /usr/lib64/mysql/libmysqlclient.so.16 (0x00007f2c6b8dd000) ? ? ? ? libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007f2c6b6a6000) ? ? ? ? libnsl.so.1 => /lib64/libnsl.so.1 (0x00007f2c6b48c000) ? ? ? ? libssl.so.10 => /usr/lib64/libssl.so.10 (0x00007f2c6b220000) ? ? ? ? libcrypto.so.10 => /usr/lib64/libcrypto.so.10 (0x00007f2c6ae3d000) ? ? ? ? libz.so.1 => /lib64/libz.so.1 (0x00007f2c6ac26000) ? ? ? ??libstdc++.so.6 => /usr/local/gcc-5.2.0/lib64/libstdc++.so.6 (0x00007f2c6a899000) ? ? ? ? libm.so.6 => /lib64/libm.so.6 (0x00007f2c6a615000) ? ? ? ??libgcc_s.so.1 => /usr/local/gcc-5.2.0/lib64/libgcc_s.so.1 (0x00007f2c6a3fe000) ? ? ? ? libc.so.6 => /lib64/libc.so.6 (0x00007f2c6a06a000) ? ? ? ? libtinfo.so.5 => /lib64/libtinfo.so.5 (0x00007f2c69e49000) ? ? ? ? libdl.so.2 => /lib64/libdl.so.2 (0x00007f2c69c44000) ? ? ? ? /lib64/ld-linux-x86-64.so.2 (0x00007f2c6c0b4000) ? ? ? ? libfreebl3.so => /lib64/libfreebl3.so (0x00007f2c699cb000) ? ? ? ? libgssapi_krb5.so.2 => /lib64/libgssapi_krb5.so.2 (0x00007f2c69787000) ? ? ? ? libkrb5.so.3 => /lib64/libkrb5.so.3 (0x00007f2c694a0000) ? ? ? ? libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00007f2c6929c000) ? ? ? ? libk5crypto.so.3 => /lib64/libk5crypto.so.3 (0x00007f2c69070000) ? ? ? ? libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x00007f2c68e64000) ? ? ? ? libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00007f2c68c61000) ? ? ? ? libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f2c68a47000) ? ? ? ? libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f2c68827000) ldd /bin/ls 【對系統無影響】 ? ? ? ? linux-vdso.so.1 => ?(0x00007fff0337f000) ? ? ? ? libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f2f230ef000) ? ? ? ? librt.so.1 => /lib64/librt.so.1 (0x00007f2f22ee7000) ? ? ? ? libcap.so.2 => /lib64/libcap.so.2 (0x00007f2f22ce2000) ? ? ? ? libacl.so.1 => /lib64/libacl.so.1 (0x00007f2f22ada000) ? ? ? ??libc.so.6 => /lib64/libc.so.6 (0x00007f2f22746000) ? ? ? ? libdl.so.2 => /lib64/libdl.so.2 (0x00007f2f22541000) ? ? ? ? /lib64/ld-linux-x86-64.so.2 (0x00007f2f23314000) ? ? ? ? libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f2f22324000) ? ? ? ? libattr.so.1 => /lib64/libattr.so.1 (0x00007f2f2211f000) 9、<個人覺得此步沒有必要>更新系統動態庫鏈接文件【黃色為分析和說明,此步驟可直接看操作】 首先找出舊版本號安裝包【已經在編譯后將老版本號gcc卸載】 rpm?-qa?|?grep?4.4.7 db4-4.7.25-18.el6_4.x86_64 libstdc++-4.4.7-11.el6.x86_64 cpp-4.4.7-11.el6.x86_64 libstdc++-devel-4.4.7-11.el6.x86_64 libgcc-4.4.7-11.el6.x86_64 libgomp-4.4.7-11.el6.x86_64 找出安裝包相應的動態庫文件【不包括有版本號路徑下的庫文件】 rpm?-ql?libstdc++-4.4.7-11.el6.x86_64?|?grep?lib /usr/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6.0.13 rpm?-ql?cpp-4.4.7-11.el6.x86_64?|?grep?lib /lib/cpp /usr/libexec/gcc /usr/libexec/gcc/x86_64-redhat-linux /usr/libexec/gcc/x86_64-redhat-linux/4.4.4 /usr/libexec/gcc/x86_64-redhat-linux/4.4.4/cc1 /usr/libexec/gcc/x86_64-redhat-linux/4.4.7 /usr/share/locale/be/LC_MESSAGES/cpplib.mo /usr/share/locale/ca/LC_MESSAGES/cpplib.mo /usr/share/locale/da/LC_MESSAGES/cpplib.mo /usr/share/locale/de/LC_MESSAGES/cpplib.mo /usr/share/locale/el/LC_MESSAGES/cpplib.mo /usr/share/locale/es/LC_MESSAGES/cpplib.mo /usr/share/locale/fr/LC_MESSAGES/cpplib.mo /usr/share/locale/id/LC_MESSAGES/cpplib.mo /usr/share/locale/ja/LC_MESSAGES/cpplib.mo /usr/share/locale/nl/LC_MESSAGES/cpplib.mo /usr/share/locale/sv/LC_MESSAGES/cpplib.mo /usr/share/locale/tr/LC_MESSAGES/cpplib.mo /usr/share/locale/uk/LC_MESSAGES/cpplib.mo /usr/share/locale/vi/LC_MESSAGES/cpplib.mo /usr/share/locale/zh_CN/LC_MESSAGES/cpplib.mo /usr/share/locale/zh_TW/LC_MESSAGES/cpplib.mo rpm?-ql?libstdc++-devel-4.4.7-11.el6.x86_64?|?grep?lib /usr/include/c++/4.4.4/cstdlib /usr/include/c++/4.4.4/tr1/cstdlib /usr/include/c++/4.4.4/tr1/stdlib.h /usr/include/c++/4.4.4/tr1_impl/cstdlib /usr/lib/gcc /usr/lib/gcc/x86_64-redhat-linux /usr/lib/gcc/x86_64-redhat-linux/4.4.4 /usr/lib/gcc/x86_64-redhat-linux/4.4.4/libstdc++.a /usr/lib/gcc/x86_64-redhat-linux/4.4.4/libsupc++.a /usr/lib/gcc/x86_64-redhat-linux/4.4.7 /usr/share/doc/libstdc++-devel-4.4.7 /usr/share/doc/libstdc++-devel-4.4.7/ChangeLog-1998.bz2 /usr/share/doc/libstdc++-devel-4.4.7/ChangeLog-1999.bz2 /usr/share/doc/libstdc++-devel-4.4.7/ChangeLog-2000.bz2 /usr/share/doc/libstdc++-devel-4.4.7/ChangeLog-2001.bz2 /usr/share/doc/libstdc++-devel-4.4.7/ChangeLog-2002.bz2 /usr/share/doc/libstdc++-devel-4.4.7/ChangeLog-2003.bz2 /usr/share/doc/libstdc++-devel-4.4.7/ChangeLog-2004.bz2 /usr/share/doc/libstdc++-devel-4.4.7/ChangeLog-2005.bz2 /usr/share/doc/libstdc++-devel-4.4.7/ChangeLog-2006.bz2 /usr/share/doc/libstdc++-devel-4.4.7/ChangeLog-2007.bz2 /usr/share/doc/libstdc++-devel-4.4.7/ChangeLog.bz2 /usr/share/doc/libstdc++-devel-4.4.7/ChangeLog~.bz2 /usr/share/doc/libstdc++-devel-4.4.7/README rpm?-ql?libgcc-4.4.7-11.el6.x86_64?|?grep?lib /lib64/libgcc_s-4.4.7-20120601.so.1 /lib64/libgcc_s.so.1 /usr/share/doc/libgcc-4.4.7 /usr/share/doc/libgcc-4.4.7/COPYING.LIB rpm?-ql?libgomp-4.4.7-11.el6.x86_64?|?grep?lib /usr/lib64/libgomp.so.1 /usr/lib64/libgomp.so.1.0.0 /usr/share/doc/libgomp-4.4.7 /usr/share/doc/libgomp-4.4.7/ChangeLog.bz2 /usr/share/info/libgomp.info.gz 查看上面篩選出的文件,確認是否為鏈接文件。以及鏈接到哪個文件 ll?/usr/lib64/libstdc++.so.6 lrwxrwxrwx.?1?root?root?19?11月?10?22:30?/usr/lib64/libstdc++.so.6?->?libstdc++.so.6.0.13 ll?/usr/lib64/libstdc++.so.6.0.13 -rwxr-xr-x.?1?root?root?987096?10月?15?2014?/usr/lib64/libstdc++.so.6.0.13 ll?/lib64/libgcc_s.so.1 lrwxrwxrwx.?1?root?root?28?1月??28?2015?/lib64/libgcc_s.so.1?->?libgcc_s-4.4.7-20120601.so.1 ll?/usr/lib64/libgomp.so.1 lrwxrwxrwx.?1?root?root?16?1月??28?2015?/usr/lib64/libgomp.so.1?->?libgomp.so.1.0.0 ll?/usr/lib64/libgomp.so.1.0.0 -rwxr-xr-x.?1?root?root?85264?10月?15?2014?/usr/lib64/libgomp.so.1.0.0 進入新版gcc文件夾查找文件 find?./?-name?libstdc++.so.6 ./lib64/libstdc++.so.6 ll?./lib64/libstdc++.so.6 lrwxrwxrwx.?1?root?root?19?11月??7?03:29?./lib64/libstdc++.so.6?->?libstdc++.so.6.0.21 find?./?-name?libgcc_s.so.1 ./lib64/libgcc_s.so.1 ll?./lib64/libgcc_s.so.1 -rw-r--r--.?1?root?root?533684?11月??7?03:29?./lib64/libgcc_s.so.1 find?./?-name?libgomp.so.1 ./lib64/libgomp.so.1 ll?./lib64/libgomp.so.1 lrwxrwxrwx.?1?root?root?16?11月??7?03:30?./lib64/libgomp.so.1?->?libgomp.so.1.0.0 結論:經比較發現僅僅有?libstdc++.so.6.0.21版本較高,且libgcc_s.so.1為不同文件【libgomp.so.1.0.0版本一致,不作處理】 操作: cp?/usr/local/gcc-5.2.0/lib64/libstdc++.so.6.0.21?/usr/lib64/ ldconfig ll?/usr/lib64/libstdc++.so.6 lrwxrwxrwx.?1?root?root?19?11月?11?01:51?/usr/lib64/libstdc++.so.6?->?libstdc++.so.6.0.21 能夠看到libstdc++.so.6已經更新 重新啟動系統驗證系統兼容度【^_^reboot成功】 作死更新libgcc_s.so.1[謹慎操作](事實上按實際情況c庫的ABI兼容度更高) cp?/usr/local/gcc-5.2.0/lib64/libgcc_s.so.1?/lib64/libgcc_s-5.2.0-20151110.so.1 ldconfig ll?/lib64/libgcc_s.so.1 lrwxrwxrwx.?1?root?root?28?11月?11?02:00?/lib64/libgcc_s.so.1?->?libgcc_s-5.2.0-20151110.so.1 重新啟動系統驗證系統兼容度【^_^reboot成功】 10、遺留問題 庫文件兼容性問題【文檔+理論——具體驗證】
最后:非常感謝廣大網友,你們的博客給了我非常多幫助,對應鏈接在此不一一列舉
總結
以上是生活随笔為你收集整理的gcc 5.2.0 编译安装笔记-20151110的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: P1726 上白泽慧音
- 下一篇: OpenLayers 3+Geoserv