我正在尝试从“/root/tmp/zlib-1.2.8/”内安装 zlib-1.2.8,但我认为我的配置选项不完整。我使用的配置命令是:
./configure --prefix=/usr2/lib2 --eprefix=/usr2/lib2
在编译之前,“/usr2/lib2/”目录是空的,因此可以轻松地与“/root/tmp/zlib-1.2.8/”中的内容进行比较。之后
make install
命令执行后,我注意到“/root/tmp/zlib-1.2.8/”目录中有许多*.o、*.lo、*.h和*.c文件,这些文件不是存在于目标目录“/usr2/lib2/”下的任何目录中。这让我觉得我的配置规范不完整。我相信 *.c 文件会放在 src 目录中,*.h 文件会放在 include 目录中,我不知道 *.lo 或 *.o 文件会放在哪里。我如何在配置命令中指定这些选项?如果有人能告诉我如何纠正这种情况,我将不胜感激?
答案1
您的配置对我来说似乎没问题(您通常只需要覆盖 中的合理默认值./configure
),您通常会包含构建步骤(make
)。从FAQ
下载的 1.2.8 存档中包含的文件中:
13. How can I make a Unix shared library?
By default a shared (and a static) library is built for Unix. So:
make distclean
./configure
make
14. How do I install a shared zlib library on Unix?
After the above, then:
make install
make
是第13点的最后一步
生成的目录不包含源文件(也不应该包含),但它们确实包含标头(其他程序编译时需要zlib
):
.
├── include
│ ├── zconf.h
│ └── zlib.h
├── lib
│ ├── libz.a
│ ├── libz.so -> libz.so.1.2.8
│ ├── libz.so.1 -> libz.so.1.2.8
│ ├── libz.so.1.2.8
│ └── pkgconfig
│ └── zlib.pc
└── share
└── man
└── man3
└── zlib.3
make
在 make 期间,并非该步骤的所有结果都会复制到目标,这是正常的install