1

glibc に付属している多くのライブラリの 1 つだけをコンパイルしたいと考えています。

つまり、必要なのは librt ライブラリ (librt.a) の静的バージョンだけです。configure/make にそれを行うように指示する方法はありますか?

現在、configure の実行時に特定の CFLAGS を設定してから glibc 全体をコンパイルし、コンパイル後に librt.a を単純に抽出するプロセスをセットアップしていますが、これは確かに 99% の無駄と 1% の収率のようです。

編集:

提案されたコマンドmake rt/librt.a

make -r PARALLELMFLAGS="" -C .. objdir=`pwd` rt/librt.a
make[1]: Entering directory '/data/soft/glibc-2.24'
make[1]: *** No rule to make target 'rt/librt.a'.  Stop.
make[1]: Leaving directory '/data/soft/glibc-2.24'
make: *** [Makefile:9: rt/librt.a] Error 2

完全なmake実行の出力を見ると、librtは次のように構築されていました

make  subdir=rt -C rt ..=../ subdir_lib

残念ながら、このコマンドも良い結果をもたらしません。

$ make  subdir=rt -C rt ..=../ subdir_lib
make: Entering directory '/data/soft/glibc-2.24/build-tree/rt'
make: *** No rule to make target 'subdir_lib'.  Stop.
make: Leaving directory '/data/soft/glibc-2.24/build-tree/rt'

興味深いことに、make を完全に実行した後、提案されたコマンドを実行すると、

$ make -j 4 rt/librt.a
make: 'rt/librt.a' is up to date.
4

2 に答える 2

2

objdirglibc ビルドは変数を中心にしています。configureを実行したパスにエクスポートすると、makesurceサブディレクトリで使用できます。

例えば:

cd .../glibc/
mkdir build
cd build
../configure --prefix=/usr
export objdir=$PWD
cd ../rt
make -j4
于 2017-01-09T18:06:12.193 に答える
1

これはそれを行う必要があります:

mkdir build && cd build && ../configure $your_flags &&
make -j20 rt/librt.a
于 2017-01-02T16:49:46.997 に答える