前言
由于一些工作需要最近需要移植程序到Linux下面,不得不说,这方面C++确实没有Java这样的语言爽,一次“编译”跨平台运行。
适用
并不适合所有的系统,目前已知。Windows下的ubuntu subSystem就不行。已经测试的是虚拟机下SuSe11 sp3、Centos6.3。其他操作系统的用户,可以尝试,在该系统下测试。
准备:
为了防止官网一些东西过期,我准备了百度网盘。地址:
http://pan.baidu.com/s/1gfLxlw3
1.依赖环境:
gmp:ftp://ftp.gnu.org/gnu/gmp
mpfr:http://ftp.gnu.org/gnu/mpfr/
mpc:http://www.cise.ufl.edu/mirrors/GNU/pub/gnu/mpc
2.需要升级的GCC
地址:http://gcc.skazkaforyou.com/releases/
以上能选新的选新的。哈哈!!!
把gmp、mpfr、mpc、gcc的包都解压,然后按照以下步骤输入:
安装:
解压GMP、mpfr、mp3解压到单独的文件夹中
A:
安装gmp:
cd gmp-6.1.2
./configure
make
macke check //无error 成功
有必要说明程序的头文件(.h)和库文件(lib*)的位置,本次安装会安装在
/usr/local/include 和 /usr/local/lib . 这个对后面安装mpfr很有作用.
B:
安装mpfr
cd mpfr-3.1.5
./configure --with-gmp-include=/usr/local/include --with-gmp-lib=/usr/local/lib
make
make check// 确认有无错误
make install
C:
安装MPC
cd mpc-1.0.3
./configure
make
make check
make install
D:配置lib目录
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
安装gcc
解压gcc 并进入目录
./configure –prefix=/usr/gcc482 –enable-threads=posix –disable-checking –disable-multilib –enable-languages=c,c++
make
make install
// 设置环境变量,以启动gcc
mkdir /usr/gcc447backup/
mv /usr/bin/{gcc,g++} /usr/gcc447backup
ln -s /usr/gcc482/bin/gcc /usr/bin/gcc
ln -s /usr/gcc482/bin/g++ /usr/bin/g++
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/gcc482/lib:/usr/gcc482/lib64
export LD_LIBRARY_PATH
查找:
find / -name "libstdc++.so*"
实例找到结果可能是如下,赋值到lib64下面
/home/gcc-5.2.0/gcc-temp/stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.21 //最新动态库
复制
cp /home/gcc-5.2.0/gcc-temp/stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.21 /usr/lib64
mkdir /usr/gcc447backup/
mv /usr/bin/{gcc,g++} /usr/gcc447backup
ln -s /usr/gcc482/bin/gcc /usr/bin/gcc
ln -s /usr/gcc482/bin/g++ /usr/bin/g++
gcc -v
特别说明的是make过程十分长,我在虚拟机跑了接近6个小时才安装完成!
另外如果要使用Cmake的同学定义以下环境变量:
export CC=/usr/gcc482/bin/gcc
export CXX=/usr/gcc482/bin/g++
如果发现不能运行自己的当前目录的so
添加:
export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH