![使用 gcc -l 选项访问库](https://linux22.com/image/1019872/%E4%BD%BF%E7%94%A8%20gcc%20-l%20%E9%80%89%E9%A1%B9%E8%AE%BF%E9%97%AE%E5%BA%93.png)
/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 开发资料,我甚至无法通过“配置”。这太荒谬了;如果该软链接理所当然地包含在任何应用程序库的主包中,生活就会简单得多。