Компилировать только части glibc
Я хочу собрать только одну из многих библиотек, поставляемых с glibc.
А именно все, что мне нужно, это статическая версия библиотеки librt (librt.a). Есть ли способ сказать, что configure / make делает именно это?
Прямо сейчас у меня есть процесс, в котором я устанавливаю определенные CFLAGS при запуске configure, а затем компилирую весь 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
и когда я посмотрел на вывод полного пробного запуска, 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.
2 ответа
Сборка glibc сосредоточена вокруг objdir
переменная. экспортируйте его в путь, по которому вы запустили configure, а затем вы можете использовать make
в подчинении.
например:
cd .../glibc/
mkdir build
cd build
../configure --prefix=/usr
export objdir=$PWD
cd ../rt
make -j4
Это должно сделать это:
mkdir build && cd build && ../configure $your_flags &&
make -j20 rt/librt.a