在使用 iconv 的情况下,如何为 FreeBSD 10-CURRENT 和以前的版本只有一个二进制文件

在使用 iconv 的情况下,如何为 FreeBSD 10-CURRENT 和以前的版本只有一个二进制文件

FreeBSD 10-CURRENT 切换到本机 iconv 而不是 libiconv 库。我们的团队有一个使用 iconv 调用的代码,我们在早期版本的 FreeBSD 上编译它。当我们在 10-Current 上启动可执行文件时,它不会以错误启动:

Shared object "libiconv.so.3" not found, required by our-lib.so

发生这种情况是因为我们使用 -libiconv 进行了编译,而该编译现在不存在。但我们不想在两个不同版本的 FreeBSD 上进行编译。那么,如果我们使用 iconv,有没有一种方法可以在以前版本的 FreeBSD 上只编译一个二进制文件呢?

答案1

FreeBSD 切换到新的本机代码,以便用 BSD 许可证下的自由代码替换非自由 (GPLd) 代码。

很明显,在拥有自己的免费实现之后,希望删除受污染的旧库。

如果您的代码是符合标准编写的,则简单的重新编译应该可以解决您的问题。请注意,最初的 iconv 实现(在 Solaris 上)是在 libc 中,我猜想 FreeBSD 也将他们的新代码放入了 libc 中。

相关内容