前のページ 次のページ 目次

6. 主ではない libc と共にコンパイル

交代用ライブラリと共にプログラムをコンパイルしたい場合です。 このセクションではどうのようにディレクトリと導入名称を前の 2 つの セクションで用いた例題を使用して成し遂げるかを説明します。名称を ご自身の設定に合わせて変更することを覚えておいてください。

6.1 主ではない libc を使用するときの注意事項

システムのブート時のプロセスで用いるプログラムをコンパイルする前に、 プログラムは動的にリンクしている事、ルート以外のパーティションを マウントする前に使用する事と全てのリンクしているライブラリはルート パーティションにある事を覚えておいてください。次のセクションでは、 前の主たる C ライブラリとして glibc を導入する時に古いライブラリを ルートパーティション にある /lib においた場合です。しかしながら、/usr が異なるパーティションにあって、glibc をテストライブラリとして /usr/i486-linuxglibc2 にインストールしてある場合 glibc と共に コンパイルした新しいプログラムは /usr パーティションをマウントする まで動作しません。

6.2 test 用 glibc と共にプログラムをコンパイル

テスト導入の glibc にプログラムをリンクするには、glibc インクルード ファイルを指すインクルードパスの再設定が必要です。 "-nostdinc" を指定すると通常のパスを無効にし、 "-I/usr/i486-linuxglibc2/include" は glibc インクルード ファイルを指すでしょう。また、 /usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2/include にある gcc インクルード を指定する必要があるでしょう。(gcc バージョン 2.7.2.2 と共に i486-linuxglibc2 にテストライブラリが導入されていると仮定して います。)

テスト導入の glibc にプログラムをリンクするには、gcc の設定を指定する 必要があります。これを行うには "-b i486-linuxglibc2" オプションを使用してください。

ほとんどのプログラム用に、makefile の CFLAGS と LDFLAGS オプションに 次の新しいオプションを付け加えて指定することができます。:

 CFLAGS = -nostdinc -I/usr/i486-linuxglibc2/include -I/usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2/include -b i486-linuxglibc2
 LDFLAGS = -b i486-linuxglibc2
 
configure スクリプトを使用している場合は、configure を実行する前に (それぞれ csh/tcsh では env/setenv、sh/bash/その他では set/export に よって) CFLAGS と LDFLAGS シェル変数を定義しましょう。configure による makefile はそのときの CFLAGS と LDFLAGS を含んでいます。全ての configure スクリプトが変数を取り入れる訳ではありませんので、configure 実行後は調べて、必要に応じて makefile を手で修正しましょう。

プログラムを (cpp も binutils も直接には呼んでいないで) gcc だけを 呼んでコンパイルしている場合、次のスクリプトが毎回すべてのオプション を指定する必要が無いのでお手元に格納してご使用下さい。:

 #!/bin/bash
 /usr/bin/gcc -b i486-linuxglibc2 -nostdinc \
              -I/usr/i486-linuxglibc2/include \
              -I/usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2/include "$@"
 
コンパイルするときに "gcc" の代わりにこのスクリプトを 使用できます。

6.3 glibc が主たるライブラリの時に libc 5 と共にプログラムをコンパイル

glibc を主たるライブラリとして導入しているときに、古いライブラリと 共にプログラムをコンパイルするには、インクルードパスを古いライブラリ になるように再設定する必要があります。"-nostdinc" を 指定すると通常のパスは無効となって、 "-I/usr/i486-linuxlibc5/include" を指定すると glibc インクルードを指すようになります。また、 "-I/usr/lib/gcc-lib/i486-linuxlibc5/2.7.2.2/include" を指定して gcc 特有のインクルードを指定する必要があります。 これらのパスは設定者がつけた新しいディレクトリ名と gcc のバージョン に合わせてるのを忘れないでください。

プログラムを古い libc とリンクするには makefile の CFLAGS と LDFLAGS オプションに次を追加してください。:

 CFLAGS = -nostdinc -I/usr/i486-linuxlibc5/include -I/usr/lib/gcc-lib/i486-linuxlibc5/2.7.2.2/include -b i486-linuxlibc5
 LDFLAGS = -b i486-linuxlibc5
 
configure スクリプトを使用している場合は、configure を実行する前に (それぞれ csh/tcsh では env/setenv、sh/bash/その他では set/export に よって) CFLAGS と LDFLAGS シェル変数を定義しましょう。configure による makefile はそのときの CFLAGS と LDFLAGS を含んでいます。全ての configure スクリプトが変数を取り入れるわけではありませんので、configure 実行後は調べて、必要に応じて makefile を手で修正しましょう。

プログラムを (cpp も binutils も直接には呼んでいないで) gcc だけを 呼んでコンパイルしている場合、次のスクリプトが毎回すべてのオプション を指定する必要が無いのでお手元に格納してご使用下さい。:

 #!/bin/bash
 /usr/bin/gcc -b i486-linuxlibc5 -nostdinc \
              -I/usr/i486-linuxlibc5/include \
              -I/usr/lib/gcc-lib/i486-linuxlibc5/2.7.2.2/include "$@"
 
コンパイルするときに "gcc" の代わりにこのスクリプトを 使用できます。


前のページ 次のページ 目次