使用 gcc -l 选项访问库

使用 gcc -l 选项访问库

/usr/lib/x86_64-linux-gnu 包含 1000 多个有用的库。希望能够使用 gcc 中的 -l 选项访问它们,其中 -l -lfoo表示“插入库libfoo.so”。

.so但是许多通用库的名称末尾没有;例如-ltiff不起作用(尽管出现在无数免费软件的 Makefile 中)。原因是所提供的只是

    libtiff.so.5 which is a soft link to
    libtiff.so.5.3.0 

没有libtiff.so哪个是软链接libtiff.so.5。同样,-ljpeg' does not work (and there are dozens of others), but-lpng` 也可以,因为它提供了

    libpng.so which is a soft link to
    libpng16.so which is a soft link to
    libpng16.so.16.34.0

为什么不是所有的图书馆都以这种形式提供?

答案1

我找到了答案。软链接 libtiff.so 仅由 libtiff 开发包提供(其中还包括 .h 文件等)。有一种假设是,如果您正在编译代码并在配方中包含 -ltiff,则您必须使用 libtiff 编译应用程序,这确实是正确的,但这并不意味着您对 tiff 接口有任何兴趣。

事实上,我正在编译 xsane,它是 sane 系统的前端(试图识别一个可疑的错误),而 tiff 只是它的众多后端之一,如果不先下载 libtiff 开发资料,我甚至无法通过“配置”。这太荒谬了;如果该软链接理所当然地包含在任何应用程序库的主包中,生活就会简单得多。

相关内容