GCC-8.5.0编译——Solaris 10版

Oracle Solaris 10 开发环境配置

前言:

​ 首先说明一下,为什么要配置这个2005年1月发布的,距今将近有20年的,old不能再old的操作系统。当然是工作需要。

​ 尽管Solaris10发布距今已经有18年的历史,但作为一个大厂(Oracle)开发的unix操作系统,鉴于其良好的稳定性,至今仍在不少服务器上服役。然而,即便拥有稳定性,落后的开发环境也已经不能满足当今现代开发工作的要求。在Solaris10上,自带的gcc只有3.8版本, 即使改换镜像源www.opencsw.com,最新的gcc也只有5.5.0版本。而作为离线服务器使用时,断网条件,使得我们无法从容的去配置开发环境。这也使得我在初次面对Solaris10操作系统时,手足无措。但说归说,工作还是第一位。在坚持不懈的死磕了一个星期之后,也终于搞定了solaris10离线环境配置。抱着取之于民,用之于民的态度,特写下历程与教程分享。随文也附上了我编译好的成品。希望能帮助广大网友。记得收藏点赞加关注。

1 安装

​ Solaris 10的系统安装这里就不多赘述了,网上大把的教程,但是作为在虚拟机里安装编译的同时,有几点是需要注意的。

  • # 默认设置
    	安装系统的同时,尽量保持默认设置,如语言、地区等(地区可以选中国),语言最好默认English,编码也是如此。网络选择有网,远程serveice选项,毕竟之后还要ssh,无论是自定义IP还是DHCP,后期都可以ifconfig -a 找到IP地址。改一下/etc/ssh/sshd_config 的PermitRootLogin yes即可远程ssh。
    	
    # 磁盘容量
    	编译gcc,长时间编译的同时,也会产生大量的缓存文件,这些文件高达10~20G,因此,在虚拟机或实体机安装系统时,到磁盘分配这一步,一定要手动分配磁盘,默认在系统分区分配的磁盘只有8个G,远远不够。在下就吃过这样的亏,在解决诸多编译错误已经心疲力竭后,看到gcc已经有条不紊的在编译的时候,心想终于可以放松了,在盯着它编译了大概2个小时之后,突然报错,一看,磁盘空间不足。心里那叫一个/(ㄒoㄒ)/~~,又不会重新分区,这意味着前期准备的所有环境,都是无用工,系统还得重新安装,下述命令可以显示磁盘分区状态。
    	# df -kh
    	默认的系统分区就是8.1G,看到8.1G的朋友,可以直接准备重装(除非你会重新分区)。
    

2 Vim配置

  • # 配置vim
    	系统自带的vi,那是要多难用有多难用,用它编辑个环境变量,真的是怒火中烧。当然也不是不能用,只要你小心点,一个字母都不要打错,那还是没得关系的。不然,你就只能推倒重来了。这里我借助www.opencsw.com,安装一个vim,辅助我们后面的开发环境,当然我前面说的是完全离线安装,所以这个不装也行。想装的朋友,运行以下命令:(剪切粘贴到终端直接运行即可)
    	pkgadd -d http://get.opencsw.org/now
    	/opt/csw/bin/pkgutil -U
    	/opt/csw/bin/pkgutil -y -i vim
    	
    	
    # 配置ssh 
    	运行下述命令,找到PermitRootLogin 将 no 改为 yes
    	/opt/csw/bin/vim /etc/ssh/sshd_config
    	svcadm restart ssh
    

3 环境变量

  • # ssh 链接
    	配置好sshd_config后,就可以远程链接到ssh,这里推荐Tabby,不要用cmd或者powershell,需要加特许命令,如下,不方便。
    	ssh -o KexAlgorithms=diffie-hellman-group14-sha1 root@sun(cmd or ps)
    	ssh root@sun(Tabby,省事很多)
    	
    	
    	
    # 环境变量配置
    /opt/csw/bin/vim /etc/profile
    命令o末尾添加一行
    
    # PATH
    PATH=/usr/ccs/bin:/usr/sfw/bin:/opt/csw/bin:$PATH;
    export PATH
    # LD_LIBRARY_PATH
    LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH;
    export LD_LIBRARY_PATH
    
    这里说明一下,上面的各种路径都是什么意思
    # /usr/sfw/bin : 系统自带 gcc g++ gmake 所在路径
    # /opt/csw/bin : vim 所在路径,这就不说了
    # /usr/ccs/bin : ar as ld m4 所在路径
    # LD_LIBRARY_PATH=/usr/local/lib : 后面安装gcc和cmake的以及其他软件默认路径,我这里提前加上了。
    
    这里要注意 /usr/ccs/bin : ar as ld :
    	用find / -name ar(或其他的)会查询到多个文件夹里都有相同的这些ar as ld文件
    	但是solaris 10 中,只能用/usr/ccs/bin这个路径下的 ar as ld 命令
    	用其他路径下的 ar as ld ,则无法链接solaris本地库。(/usr/xpg4/bin/ 下的命令我没有试过)
    	
    ar(archive)命令用于创建和操作静态库,静态库是由多个目标文件打包而成的归档文件。ar命令可以用来创建新的静态库、向静态库中添加目标文件、从静态库中提取目标文件等操作。
    as(assembler)命令是GNU汇编器,它将汇编语言代码转换成机器码。as命令可以将汇编源文件汇编成目标文件,供链接器使用。
    ld(linker)命令是链接器,用于将目标文件和库文件链接成可执行文件或共享库。ld命令将各个目标文件中的符号和地址进行解析、连接,并生成最终的可执行文件或共享库。	
    m4 gcc编译所需依赖
    
    
    
    # 环境变量生效
    . /etc/profile
    

4 系统依赖

  • # 上传 OracleDeveloperStudio
    	由于solaris10是一个比较老的系统,再加上全新安装,所以,系统中的库文件以及开发的必备依赖缺失的非常严重,可以说是要啥没啥,好在官方给了一个安装OracleDeveloperStudio,基本提供了一些必备的库和依赖,不然就只能放弃了。一个个寻找安装,那是不可能的,鬼知道缺失多少库。下载去官网,或者我的csdn资源里。
    	
    	首先在根目录创建一个test文件夹,然后将OracleDeveloperStudio12.6上传到这个文件夹
    	这里我改了一下 C:\Windows\System32\drivers\etc 下面的hosts文件,末尾添加了我的ip并取了别名sun
    	192.168.xx.xxx sun
    	
    	执行命令:
    	cd && mkdir test (solaris 10)
    	scp OracleDeveloperStudio12.6-solaris-x86-pkg.tar.bz2 root@sun:test (cmd)
    	
    	
    	
    # 安装OracleDeveloperStudio12.6
    cd && cd test
    bzip2 -d OracleDeveloperStudio12.6-solaris-x86-pkg.tar.bz2
    tar -xvf OracleDeveloperStudio12.6-solaris-x86-pkg.tar
    cd OracleDeveloperStudio12.6-solaris-x86-pkg
    ./developerstudio.sh --non-interactive --libraries-only
    ./install_patches.sh
    

5 GCC依赖

  • # 安装gcc依赖
    	Building GCC requires GMP 4.2+, MPFR 2.4.0+ and MPC 0.8.0+.
    	编译gcc需要三个依赖项,gmp、mpfr、mpc、m4(自带),这里可以去官网下载,也可以下载我打包好的资源。同样,scp上传到test文件夹里,这里只给个例子
    	scp C:\\xxx\xxx\gmp.zip mpfr.zip mpc.zip (或tar.gz\tar.bz2) root@sun:test
    	这里我是window上直接7z解压出来,再打包成zip上传,系统自带tar版本过旧,有些文件解压会丢失。
    
    # 解压
    unzip gmp.zip
    unzip mpfr.zip
    unzip mpc.zip
    
    
    # gmp编译
    cd gmp
    chmod +x /test/gmp/mpn/m4-ccas && chmod +x /test/gmp/install-sh && chmod +x ./configure && ./configure ABI=64 CC="gcc -m64" CXX="g++ -m64"
    gmake
    gmake check
    gmake install
    
    
    # mpfr编译
    cd mpfr
    chmod +x ./configure && chmod +x /test/mpfr/install-sh && ./configure --with-gmp-include=/usr/local/include --with-gmp-lib=/usr/local/lib ABI=64 CC="gcc -m64" CXX="g++ -m64"
    gmake
    gmake check
    gmake install
    
    
    # mpc编译
    cd mpc
    chmod +x ./configure && chmod +x /test/mpc/install-sh && ./configure --with-gmp-include=/usr/local/include  --with-gmp-lib=/usr/local/lib --with-mpfr-include=/usr/local/include  --with-mpfr-lib=/usr/local/lib ABI=64 CC="gcc -m64" CXX="g++ -m64"
    gmake
    gmake check
    gmake install
    

6 GCC编译

  • # 上传gcc
    这里选用的是 gcc 8.5.0 因为从 gcc 9就开始不支持一些接口,从 gcc 10就完全不支持了
    可以去官网下载,也可以下载我打包好的资源。同样,scp上传到test文件夹里。
    
    # 解压
    unzip gcc.zip
    cd gcc
    
    # 授权
    chmod +x ./configure && chmod +x /test/gcc/install-sh && chmod +x /test/gcc/move-if-change && chmod +x /test/gcc/libgcc/mkheader.sh
    
    # 回到test目录 建立build文件夹,gcc编译需要在源目录之外
    cd && cd test
    mkdir build && cd build
    
    # 正式编译
    ../gcc/configure --with-gmp=/usr/local/include --with-mpfr=/usr/local/include --with-mpc=/usr/local/include --enable-languages=c,c++ --enable-shared --disable-nls ABI=64 CC="gcc -m64" CXX="g++ -m64" --build=x86_64-pc-solaris2.10
    gmake
    gmake check(autogen command not found,这一步可省略)
    gmake install
    

7 环境变量

  • # 原因
    由于之前的环境变量是旧版本gcc,这里要添加新版gcc环境变量以及依赖库
    
    # 环境变量
    # /usr/ccs/bin : ar as ld
    # /opt/csw/bin : vim
    # /usr/local/bin : gcc g++ cmake(后续编译)
    
    # /usr/local/lib 编译的gcc及其他程序库
    # /usr/local/lib/amd64 64位的gcc库
    
    PATH=/usr/ccs/bin:/usr/local/bin:/opt/csw/bin:$PATH;
    export PATH
    LD_LIBRARY_PATH=/usr/local/lib/amd64:/usr/local/lib:$LD_LIBRARY_PATH;
    export LD_LIBRARY_PATH
    

8 CMake安装

  • # 上传cmake
    上传 解压 这里3.26最新版
    scp C:\\xxx\xxx\cmake.zip root@sun:test
    unzip cmake.zip 
    cd cmake
    
    # 编译安装
    chmod +x ./bootstrap && ./bootstrap
    gmake
    gmake install
    

9 三方求解库安装

  • # Eigen
    cd /export/home/user/test/Eigen/Eigen3
    mkdir build && cd build
    cmake ..
    gmake install
    
    
    
    # Osqp(仅限Solaris10)
    # 将QDLDL的源码放到OSQP的lin_sys\direct\qdldl\qdldl_sources文件夹中,可同时编译
    cd /export/home/user/test/Osqp/osqp
    mkdir build && cd build
    cmake -G "Unix Makefiles" -DCMAKE_EXE_LINKER_FLAGS="-lrt -lposix4" ..
    cmake --build .
    cmake --build . --target install
    
    
    
    # OsqpEigen
    cd /export/home/user/test/OsqpEigen/osqp-eigen
    mkdir build && cd build
    cmake ..
    gmake
    gmake install
    

10 转移GCC

  • # 打包GCC、cmake等等
    zip -r local.zip /usr/local/*
    scp root@sun:/usr/local.zip  C:\\Users\\1945\\Desktop\\test\\local.zip
    
    # 解压
    scp C:\\Users\\1945\\Desktop\\test\\local.zip root@sun:
    unzip local.zip
    
    # 环境变量
    # ENV
    # /usr/local/bin : gcc g++ cmake
    # /opt/csw/bin : vim
    # /usr/ccs/bin : ar as ld
    # /usr/local/lib 编译的三方库以及gmp、mpc等库
    # /usr/local/lib/amd64 64位的gcc库
    PATH=/usr/ccs/bin:/usr/local/bin:/opt/csw/bin:$PATH;
    export PATH
    LD_LIBRARY_PATH=/usr/local/lib/amd64:/usr/local/lib:$LD_LIBRARY_PATH;
    export LD_LIBRARY_PATH
    
    # OracleDeveloperStudio12.6安装
    bzip2 -d OracleDeveloperStudio12.6-solaris-x86-pkg.tar.bz2
    tar -xvf OracleDeveloperStudio12.6-solaris-x86-pkg.tar
    cd OracleDeveloperStudio12.6-solaris-x86-pkg
    ./developerstudio.sh --non-interactive --libraries-only
    ./install_patches.sh
    
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值