![如何告诉 libgs 使用另一个 freetype 实现?](https://linux22.com/image/10813/%E5%A6%82%E4%BD%95%E5%91%8A%E8%AF%89%20libgs%20%E4%BD%BF%E7%94%A8%E5%8F%A6%E4%B8%80%E4%B8%AA%20freetype%20%E5%AE%9E%E7%8E%B0%EF%BC%9F.png)
因此,在使用一年后,我的打印机决定不再打印。经过一番故障排除后,我注意到杯子错误日志显示类似的内容
gs: symbol lookup error: <path>/libgs.so.9: undefined symbol: FT_Property_Set
我发现这很奇怪。由于 FT_Property_Set 显然是 freetype 库的一部分,我检查了:
ldd <path>/libgs.so.9
..
libfreetype.so.6 => <path>/freetype-infinality/libfreetype.so.6
..
然后 grepreadelf -Ws <path>/freetype-infinality/libfreetype.so.6
实际上显示它没有定义 FT_Property_Set。我还安装了“正常”freetype 实现,并且 grepreadelf -Ws <path>/libfreetype.so.6.14.0
确实显示它定义了 FT_Property_Set。因此,在删除无限版本后,libgs 使用正常的 libfreetype.so,我可以继续打印。我的问题是我是否可以告诉 libgs 以某种方式只使用普通的 freetype 库而不删除无限性(以便其他程序仍然会使用它)?
答案1
一种解决方案是将 LD_PRELOAD 设置为原始 libfreetype.so。另一种是使用最新的 libfreetype (2.8.1) 重新编译 infinality。