Solaris 11 で,gcc, binutils などをインストール
パッケージによるインストール
Solaris 11 の IPS パッケージリポジトリには,gcc, binutils, make, m4, autoconf, automake, bison, flex, wget, GNU Emacs が用意されている。特別な理由がなければ,パッケージを使う。
端末を開き,次のコマンドを実行する。
sudo pkg install gcc-14
sudo pkg install gnu-binutils
sudo pkg install gnu-make
sudo pkg install gnu-m4
sudo pkg install autoconf
sudo pkg install automake
sudo pkg install bison
sudo pkg install flex
sudo pkg install wget
sudo pkg install gnu-emacs
パッケージ名は pkg search で調べることができる。端末で次のコマンドを実行する。
pkg search -p gcc
ソースコードからのインストール
パッケージより新しい版が必要なときは,ソースコードからインストールする。インストール先は /usr/local とする。
端末を開き,次のスクリプトをコピー&ペーストして実行する。
export PATH=/usr/bin:/usr/sbin:/sbin:/usr/local/bin
export SRCURL=https://ftp.gnu.org/gnu
echo make-4.4.1
cd /tmp; if [ ! -f make-4.4.1.tar.gz ]; then
wget ${SRCURL}/make/make-4.4.1.tar.gz
fi
cd /tmp; rm -rf make-4.4.1
cd /tmp; gzip -d < /tmp/make-4.4.1.tar.gz | tar -xvof -
cd /tmp/make-4.4.1; ./configure --prefix=/usr/local
cd /tmp/make-4.4.1; make clean
cd /tmp/make-4.4.1; make
cd /tmp/make-4.4.1; sudo make install
sudo ln -sf /usr/local/bin/make /usr/local/bin/gmake
read -p 'Press Enter to Continue' Answer
echo m4-1.4.21
cd /tmp; if [ ! -f m4-1.4.21.tar.gz ]; then
wget ${SRCURL}/m4/m4-1.4.21.tar.gz
fi
cd /tmp; rm -rf m4-1.4.21
cd /tmp; gzip -d < /tmp/m4-1.4.21.tar.gz | tar -xvof -
cd /tmp/m4-1.4.21; ./configure --prefix=/usr/local
cd /tmp/m4-1.4.21; make clean
cd /tmp/m4-1.4.21; make
cd /tmp/m4-1.4.21; sudo make install
read -p 'Press Enter to Continue' Answer
echo autoconf-2.73
cd /tmp; if [ ! -f autoconf-2.73.tar.gz ]; then
wget ${SRCURL}/autoconf/autoconf-2.73.tar.gz
fi
cd /tmp; rm -rf autoconf-2.73
cd /tmp; gzip -d < /tmp/autoconf-2.73.tar.gz | tar -xvof -
cd /tmp/autoconf-2.73; ./configure --prefix=/usr/local
cd /tmp/autoconf-2.73; make clean
cd /tmp/autoconf-2.73; make
cd /tmp/autoconf-2.73; sudo make install
read -p 'Press Enter to Continue' Answer
echo automake-1.18.1
cd /tmp; if [ ! -f automake-1.18.1.tar.gz ]; then
wget ${SRCURL}/automake/automake-1.18.1.tar.gz
fi
cd /tmp; rm -rf automake-1.18.1
cd /tmp; gzip -d < /tmp/automake-1.18.1.tar.gz | tar -xvof -
cd /tmp/automake-1.18.1; ./configure --prefix=/usr/local
cd /tmp/automake-1.18.1; make clean
cd /tmp/automake-1.18.1; make
cd /tmp/automake-1.18.1; sudo make install
read -p 'Press Enter to Continue' Answer
echo bison-3.8.2
cd /tmp; if [ ! -f bison-3.8.2.tar.gz ]; then
wget ${SRCURL}/bison/bison-3.8.2.tar.gz
fi
cd /tmp; rm -rf bison-3.8.2
cd /tmp; gzip -d < /tmp/bison-3.8.2.tar.gz | tar -xvof -
cd /tmp/bison-3.8.2; ./configure --prefix=/usr/local
cd /tmp/bison-3.8.2; make clean
cd /tmp/bison-3.8.2; make
cd /tmp/bison-3.8.2; sudo make install
read -p 'Press Enter to Continue' Answer
echo binutils-2.46.1
cd /tmp; if [ ! -f binutils-2.46.1.tar.gz ]; then
wget ${SRCURL}/binutils/binutils-2.46.1.tar.gz
fi
cd /tmp; rm -rf binutils-2.46.1
cd /tmp; gzip -d < /tmp/binutils-2.46.1.tar.gz | tar -xvof -
cd /tmp/binutils-2.46.1; ./configure --prefix=/usr/local --enable-shared
cd /tmp/binutils-2.46.1; /usr/local/bin/make clean
cd /tmp/binutils-2.46.1; /usr/local/bin/make
cd /tmp/binutils-2.46.1; sudo /usr/local/bin/make install
read -p 'Press Enter to Continue' Answer
echo gcc-16.2.0
cd /tmp; if [ ! -f gcc-16.2.0.tar.gz ]; then
wget ${SRCURL}/gcc/gcc-16.2.0/gcc-16.2.0.tar.gz
fi
cd /tmp; rm -rf gcc-16.2.0
cd /tmp; gzip -d < /tmp/gcc-16.2.0.tar.gz | tar -xvof -
cd /tmp/gcc-16.2.0; ./contrib/download_prerequisites
mkdir -p /tmp/gcc-16.2.0/build
cd /tmp/gcc-16.2.0/build; ../configure --prefix=/usr/local --with-gnu-as --with-as=/usr/local/bin/as --enable-shared --enable-languages=c,c++
cd /tmp/gcc-16.2.0/build; /usr/local/bin/make bootstrap
cd /tmp/gcc-16.2.0/build; sudo /usr/local/bin/make install
read -p 'Press Enter to Continue' Answer
echo emacs-30.2
cd /tmp; if [ ! -f emacs-30.2.tar.gz ]; then
wget ${SRCURL}/emacs/emacs-30.2.tar.gz
fi
cd /tmp; rm -rf emacs-30.2
cd /tmp; gzip -d < /tmp/emacs-30.2.tar.gz | tar -xvof -
cd /tmp/emacs-30.2; ./configure --prefix=/usr/local --with-site-lisp
cd /tmp/emacs-30.2; make
cd /tmp/emacs-30.2; sudo make install
gcc の bootstrap には,gmp, mpfr, mpc, isl が必要である。上のスクリプトでは contrib/download_prerequisites で取得している。
gcc の動作確認
端末を開き,次のコマンドを実行する。
cd /tmp
rm -f /tmp/a.c
echo '#include<stdio.h>' > /tmp/a.c
echo 'int main() {' >> /tmp/a.c
echo 'printf( "sizeof(int) = %zu\n", sizeof(int) );' >> /tmp/a.c
echo 'printf( "sizeof(long int) = %zu\n", sizeof(long int) );' >> /tmp/a.c
echo 'printf( "sizeof(long long int) = %zu\n", sizeof(long long int) );' >> /tmp/a.c
echo 'return 0;' >> /tmp/a.c
echo '}' >> /tmp/a.c
gcc -o a.out a.c
./a.out
64 ビット環境(gcc -m64,Solaris 11 の既定)では,int が 4 バイト,long int が 8 バイト,long long int が 8 バイトと表示される。32 ビット(gcc -m32)では,long int は 4 バイトになる。
OpenSSL, OpenSSH
Solaris 11 では,OpenSSL 3 と OpenSSH がパッケージで提供され,OS の更新に合わせて修正版が配布される。ソースコードから入れ直す必要はない。
端末を開き,次のコマンドを実行する。
sudo pkg install openssl
sudo pkg install ssh
sudo pkg update
sshd の設定ファイルは /etc/ssh/sshd_config,クライアントの設定ファイルは /etc/ssh/ssh_config である。設定を変更したあとは,端末で次のコマンドを実行して sshd を再起動する。
sudo svcadm restart svc:/network/ssh:default
sshd の状態は,端末で次のコマンドを実行して確認する。
svcs svc:/network/ssh:default
参考 Web ページ:
- OpenSSL: https://www.openssl.org/
- OpenSSH: https://www.openssh.com/
- GNU のソースコード配布サイト: https://ftp.gnu.org/gnu/