1

我只想编译 glibc 附带的众多库之一。

也就是说,我需要的只是 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

glibc 构建以objdir变量为中心。将其导出到您运行配置的路径,然后您可以make在 surce 子目录中使用。

例如:

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 回答