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