5

我正在尝试在我的 FreeBSD 7.1 (BSD) 服务器上编译 Perl 5.10,但是当我运行配置脚本并回答问题时,我收到以下错误:

...POSTIX threads should be supported by FreeBSD 7.1 ... but your system is missing the shared libc_r.

谷歌搜索的答案想出了安装 gethostnamadr.c 这很好,除了两件事:

  1. 我不知道把这个文件放在哪里
  2. 如果 Configure 想要查看 libc_r,这如何解决我的问题?
4

2 回答 2

4

要在 FreeBSD 7.* 上启用 Perl 5.10 线程,您只需使用patch. 然后,您可以使用 -Dusethreads 构建 perl 或回答Configure文件问题以启用线程,一切顺利。我还没有进行任何重要的测试或比较,但是一切都可以正常编译,包括线程库,并且我所有的 Perl 程序都可以正常工作。

--- hints/freebsd.sh 2008/10/20 04:59:30 1.1
+++ hints/freebsd.sh 2008/10/20 22:49:29
@@ -211,6 +211,14 @@
exit 1
;;

+ 7.*)
+ # 7.x doesn't install libc_r by default, and Configure
+ # would fail in the code following
+ #
+ # gethostbyaddr_r() appears to have been implemented in 6.x+
+ ldflags="-pthread $ldflags"
+ ;;
+
*)
if [ ! -r "$lc_r" ]; then
cat <<EOM >&4 

编辑:我忘记了我的参考;在这里查看更多信息:http ://www.gossamer-threads.com/lists/perl/porters/232518?nohighlight=1#232518 。

于 2009-05-02T19:02:02.557 回答
3

与 Spolsky 所说的“perl 几乎被遗忘”相反...... perl 非常活跃。

您还没有指出您安装了哪个版本的 FreeBSD... 但是假设您安装了最少的 FreeBSD 7.1,那么您无法安装线程库或线程库不在库路径中。

请注意,libc 是一个通用的“c”库,而 libc_r 是该文件的线程安全版本。一些 2005 年的谷歌结果表明 libc_r 已被弃用。

考虑到这一点,您很可能正处于“修订冲突”之中。遗憾的是,FreeBSD 本身并没有提供 perl 的线程安全版本,但是,它们确实打包了 perl 5.10 和几个更​​高版本。我发现这个链接很有用:

http://www.nabble.com/How---where-to-get-a-Perl-that-has-threads--td22270858.html

您可能还想尝试安装 FreeBSD 附带的 p5-fork 库

http://www.nabble.com/How---where-to-get-a-Perl-that-has-threads--td22270858.html

于 2009-05-02T18:26:25.390 回答