ホーム >

Cygwin

Linux上で動作するCygwinのクロスコンパイラをビルドする

インストール先と作業ディレクトリの指定

PREFIX=$HOME/cygwin-tools
SYSROOT=$PREFIX/i686-pc-cygwin/sys-root
WORK=$HOME/build/cygwin
mkdir -p $WORK

gmp,mpfr,mpcのインストール

gccをコンパイルするにはこれらのライブラリが必要。 ディストリビューション標準のライブラリはバージョンが古いことがあるので、 最新のバージョンをコンパイルする。

cd $WORK
# gmpのインストール
wget ftp://ftp.gnu.org/gnu/gmp/gmp-5.0.2.tar.bz2
tar jxf gmp-5.0.2.tar.bz2
cd gmp-5.0.2
./configure
make
sudo make install
sudo /sbin/ldconfig
cd ../

# mpfrのインストール
wget http://www.mpfr.org/mpfr-current/mpfr-3.1.0.tar.bz2
tar jxf mpfr-3.1.0.tar.bz2
cd mpfr-3.1.0
./configure
make
sudo make install
sudo /sbin/ldconfig
cd ../

# mpcのインストール
wget http://www.multiprecision.org/mpc/download/mpc-0.9.tar.gz
tar zxf mpc-0.9.tar.gz
cd mpc-0.9
./configure
make
sudo make install
sudo /sbin/ldconfig
cd ../

Cygwinのパッケージのダウンロード及び展開

libiconvはlibstdc++-v3のコンパイルに必要

cd $WORK
wget http://www.ring.gr.jp/archives/pc/gnu-win32/release/cygwin/cygwin-1.7.9-1.tar.bz2
wget http://www.ring.gr.jp/archives/pc/gnu-win32/release/w32api/w32api-3.17-2.tar.bz2
wget http://www.ring.gr.jp/archives/pc/gnu-win32/release/libiconv/libiconv-1.14-2.tar.bz2

mkdir -p $SYSROOT
cd $SYSROOT
tar jxf $WORK/cygwin-1.7.9-1.tar.bz2
tar jxf $WORK/w32api-3.17-2.tar.bz2
tar jxf $WORK/libiconv-1.14-2.tar.bz2

# gccのコンパイル途中でリンクエラーになるのを避けるために、ライブラリにシンボリックリンクを張る
cd ./user/lib
ln -s w32api/libuser32.a .
ln -s w32api/libkernel32.a .
ln -s w32api/libadvapi32.a .
ln -s w32api/libshell32.a .

binutilsのコンパイル

32ビットのLinuxの場合は、x86_64-linux-gnuをi686-linux-gnuに置き換える。

cd $WORK
wget http://ftp.gnu.org/gnu/binutils/binutils-2.22.tar.bz2
tar jxf binutils-2.22.tar.bz2

mkdir build_binutils-2.22_i686-pc-cygwin
cd build_binutils-2.22_i686-pc-cygwin

../binutils-2.22/configure --prefix=$PREFIX --program-prefix=i686-pc-cygwin- --enable-lto --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=i686-pc-cygwin --with-sysroot=$SYSROOT
make
make install

# binutilsがインストールされたディレクトリにパスを通す
export PATH=$PATH:$PREFIX/bin

gccのコンパイル

cd $WORK
wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-4.6.2/gcc-4.6.2.tar.bz2
tar jxf gcc-4.6.2.tar.bz2

mkdir build_gcc-4.6.2_i686-pc-cygwin
cd build_gcc-4.6.2_i686-pc-cygwin

../gcc-4.6.2/configure --prefix=$PREFIX --enable-static --enable-shared --enable-shared-libgcc --disable-__cxa_atexit --disable-sjlj-exceptions --enable-languages=c,c++ --with-newlib --enable-graphite --enable-lto --disable-symvers --program-prefix=i686-pc-cygwin- --enable-libgomp --enable-libssp --enable-threads=posix --disable-win32-registry --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=i686-pc-cygwin --with-sysroot=$SYSROOT
make
make install

パッケージ管理コマンドapt-cygの使い方

apt-cygのインストール方法

svn --force export http://apt-cyg.googlecode.com/svn/trunk/ /bin/
chmod +x /bin/apt-cyg

パッケージのインストール方法

apt-cyg find パッケージ名

で正式なパッケージ名を調べ、

apt-cyg install パッケージ名

でパッケージをインストールする。

あるファイルを含むパッケージを調べる

apt-cyg packageof ファイル名