在运行时检查 libxml2.so 的构建参数

Check build parameters of libxml2.so at runtime

我正在编写一个链接到系统上 libxml2 的简单应用程序。它适用于几乎所有用户,但一位用户在从网络读取特定 xml 文件时报告了此错误:

Unsupported encoding ISO8859-1

此错误通常表示构建了 libxml2 --without-iconv。有什么方法可以显式测试系统上的 libxml2 动态库是否支持 iconv?

我可以想到两种方法:

  1. 使用 xml 的 iconv 特性编写一个简短的测试程序。如果它不存在,它应该表现不同。这就是 GNU 配置软件所做的——它通过使用它们来测试存在的特性。
  2. 这是一个 hack - 找到 libxml 中存在的常见 iconv 符号和 iconv,但如果缺少 iconv 则不会。使用 nm 等实用程序列出库文件中的符号。

或者通过将工作库xml与您的应用程序打包来避免此问题。