戻る

前へ| 次へ

gcc コンパイラセットアップ 2回目

今回で C 及び C++ に 対応した gcc コンパイラ の セットアップ を 行い ます。

$ cd ${PRJROOT}/build-tools

今回は ディレクトリ build-gcc/ に 移動します。

$ cd ${PRJROOT}/build-tools/build-gcc

configure

configure します 今度も 別のディレクトリ ${PRJROOT}/build-tools/build-gcc/ つまり /home/ddd/proj/build-tools/build-gcc/ に 移動します。

$ echo ${PRJROOT}/build-tools/build-gcc/
/home/ddd/proj/build-tools/build-gcc/
$ cd ${PRJROOT}/build-tools/build-gcc/
$ ../gcc-2.95.3/configure --target=$TARGET --prefix=${PREFIX} \
--enable-languages=c,c++ 

make all

ほたら 今回は make all です 1回目は make all-gcc でした

$ make all 

make install

さて make install します。

$ make install

ツールチェーン セットアップ 終了後の処理

${PREFIX}/${TARGET}に有るファイルの中で ホストユーティリティのコピーが ${PREFIX}/${TARGET}/bin に 先頭にターゲット名がつかない形でインストールされているそうです。 本来このディレクトリは C ライブラリの ビルド手順で インストールされた ターゲットバイナリが入っている事のようです。 ホストバイナリをこのディレクトリから出して、ホストバイナリにふさわしい別のディレクトリに移す事が推奨される様です。

さて 移す対象のファイルは ar as gcc ld nm ranlib strip ということの様 です。では何処に 移動させるのでしょうか?

移動先を 見つけるために -print-search-dirs を 試みます。

$ i386-linux-gcc -print-search-dirs
install: /home/ddd/proj/tools/lib/gcc-lib/i386-linux/2.95.3/
programs: /home/ddd/proj/tools/lib/gcc-lib/i386-linux/2.95.3/:\
/home/ddd/proj/tools/lib/gcc-lib/i386-linux/:\
/usr/lib/gcc/i386-linux/2.95.3/:/usr/lib/gcc/i386-linux/:\
/home/ddd/proj/tools/i386-linux/bin/i386-linux/2.95.3/:\
/home/ddd/proj/tools/i386-linux/bin/
libraries: /home/ddd/proj/tools/lib/gcc-lib/i386-linux/2.95.3/:\
/usr/lib/gcc/i386-linux/2.95.3/:\
/home/ddd/proj/tools/i386-linux/lib/i386-linux/2.95.3/:\
/home/ddd/proj/tools/i386-linux/lib/

programs: の 最初のものは /home/ddd/proj/tools/lib/gcc-lib/i386-linux/2.95.3/ の様になっています。

ここには gcc ライブラリ と ユーティリティ が 入っています。このディレ クトリに ar as gcc ld nm ranlib strip というバイナリを 置くと クロスコ ンパイラは ネイティブツールの代わりにこちらを 使う事に なるようです。

$ mv ar as gcc ld nm ranlib strip ${PREFIX}/lib/gcc-lib/i386-linux/2.95.3

ar as gcc ld nm ranlib strip を 移動したディレクトリ だけで ユーティ リティを探す場合に備えて 移動したバイナリへのシンボリック リンクも作成すると良いそうです。 しかし、ほとんどの アプリケーションは此のディレクトリだけしか見ないわけでは 無いので大抵はこのステップを省略する事が出来る。 これらのシンボリックリンクが必要となる1つの例は、ターゲット用にGNUクロス プラットフォーム開発ツールチェーンの コンポーネントを再コンパイルする必要が 有る時です それでも これらはホストバイナリ自身でなくホストバイナリへのシンボリックリンク なので ${PREFIX}/${TARGET}/bin ディレクトリの内容をターゲットの ルートファイルシステムにコピーする必要が有る場合には ターゲットバイナリと別にしておくほうが簡単ということです

リンクスクリプト

では シンボリックリンクを 作成しましょう

$  for file in as ar gcc ld nm ranlib strip
> do
> ln -s ${PREFIX}/lib/gcc-lib/i386-linux/2.95.3/$file .
> done
$ ls
ar@         gencat*    iconv*     locale*     pcprofiledump*  strip@
as@         getconf*   ld@        localedef*  ranlib@         tzselect*
catchsegv*  getent*    ldd*       mtrace*     rpcgen*         xtrace*
gcc@        glibcbug*  lddlibc4*  nm@         sprof*

にゃんたろう 拝!

2010年 1月31日 (日) 21:06:18 JST 作成


前へ| 次へ

戻る

Copyright © 2006.-2010. nyantarou All Rights Reserved.