|
このページは「24環境」の情報です gcc-3.4.3のビルド †gcc-3.4.3のビルドを試してみる。 試した環境
Cライブラリ †ターゲットのlibc(バイナリとincludeヘッダ)を開発機にインストールする glibc-2.3.3 (SH-Linux用バイナリーとincludeヘッダー)の入手 †杉岡様のサイトから頂いてくる
インストール †/usr/sh4-linux/以下にインストールする /usr/sh4-linux/lib ライブラリ /usr/sh4-linux/include ヘッダーファイル alienコマンドで.tgz形式に変換して(<=必ずしも必要ではない。えびはらが.rpmの扱いをよく知らないため)/usr/sh4-linux/ にコピーする $ su # alien -t glibc-2.3.3-27.12.sh4.rpm # alien -t glibc-headers-2.3.3-27.12.sh4.rpm # alien -t glibc-kernheaders-2.6.6-2.sh4.rpm # cd /tmp # tar xzvf /どこか/glibc-2.3.3.tgz # tar xzvf /どこか/glibc-headers-2.3.3.tgz # tar xzvf /どこか/glibc-kernheaders-2.6.6.tgz # mkdir -p /usr/sh4-linux/lib # mkdir -p /usr/sh4-linux/include # cp -a lib/* /usr/sh4-linux/lib/ # cp -a usr/include/* /usr/sh4-linux/include/ ここではカーネルヘッダをlinux-2.6.6としたけれど、自分で使うカーネルバージョンのソースから取ってくればモアベター。具体的にはカーネルの include/linux と include/asm-sh を /usr/sh4-linux/include にコピー /usr/sh4-linux/include/linux -> /カーネル/ソース/linux-2.x.x/include/linux /usr/sh4-linux/include/asm -> /カーネル/ソース/linux-2.x.x/include/asm-sh といった具合 /usr/sh4-linux/lib/libc.so (テキストファイルなのだ)を編集 /* GNU ld script Use the shared library, but some functions are only in the static library, so try that secondarily. */ OUTPUT_FORMAT(elf32-sh-linux) GROUP ( /usr/sh4-linux/lib/libc.so.6 /usr/sh4-linux/lib/libc_nonshared.a ) 以上でライブラリのインストールは完了 gccソースコードの入手とパッチ・展開 †ショートカット にパッチ済みソースを用意したのでこれを使うなら次の「コンパイル」に進んでもよい。ちゃんとやるなら下記のように。 杉岡様のサイトからgcc-3.4.3-1.src.rpmを頂いてくる。
# rpm -i gcc-3.4.3-1.src.rpm /usr/src/rpm/SOURCES gcc-3.3-sh-remove-sh3e.patch gcc-3.3-sh-rpath-link.patch gcc-3.4.0-libjava.patch gcc-3.4.1-PR16665.patch gcc-3.4.1-sh-no-reorder-blocks.patch gcc-3.4.3-sh-shlib.patch gcc-3.4.3.tar.bz2 shCPU-linux-GCC.in 展開してパッチをあてる $ cd ~ $ mkdir build $ cd build $ tar xjvf /usr/src/rpm/SOURCES/gcc-3.4.3.tar.bz2 $ cd gcc-3.4.3/ $ patch -p1 < /usr/src/rpm/SOURCES/gcc-3.3-sh-rpath-link.patch $ patch -p1 < /usr/src/rpm/SOURCES/gcc-3.3-sh-remove-sh3e.patch $ patch -p1 < /usr/src/rpm/SOURCES/gcc-3.4.0-libjava.patch $ patch -p1 < /usr/src/rpm/SOURCES/gcc-3.4.3-sh-shlib.patch $ patch -p0 < /usr/src/rpm/SOURCES/gcc-3.4.1-sh-no-reorder-blocks.patch $ patch -p0 < /usr/src/rpm/SOURCES/gcc-3.4.1-PR16665.patch $ cd ../ (なぜか -p1 と -p0 が混在しているので注意) コンパイル †$ mkdir build $ cd build $ ../gcc-3.4.3/configure --prefix=/usr --mandir=/usr/share/man \ --infodir=/usr/info --datadir=/usr/share --target=sh4-linux \ --with-system-zlib --with-gxx-include-dir=/usr/sh4-linux/include/g++-v3 \ --includedir=/usr/sh4-linux/include --enable-checking --enable-shared \ --enable-__cxa_atexit --enable-c99 --enable-threads=posix \ --enable-long-long --enable-libf2c --enable-symvers \ --enable-languages=c,c++ $ make all-gcc (--enable-languages=c,objc,f77,c++,java も出来るらしい。けど未確認) (以下は参考まで) boss:~# gcc-3.4 -v Reading specs from /usr/lib/gcc/i486-linux/3.4.4/specs Configured with: ../src/configure -v --enable-languages=c,c++,java,f77,pascal,objc,ada,treelang --prefix=/usr --libexecdir=/usr/lib --with-gxx-include-dir=/usr/include/c++/3.4 --enable-shared --with-system-zlib --enable-nls --without-included-gettext --program-suffix=-3.4 --enable-__cxa_atexit --enable-libstdcxx-allocator=mt--enable-clocale=gnu --enable-libstdcxx-debug --enable-java-gc=boehm --enable-java-awt=gtk --disable-werror i486-linux Thread model: posix gcc version 3.4.4 20050314 (prerelease) (Debian 3.4.3-12) となった。debian適にやるには --with-gxx-include-dir=/usr/include/c++/3.4 が正しいかも インストール †# make install 実験(hello.cc) †#include <iostream> using namespace std; int main() { cout << "hello world, new g++\n"; } 関連リンク †コメント † |