配置 zlib 进行编译和安装

配置 zlib 进行编译和安装

我正在尝试从“/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

相关内容