5

FreeBSD 7.1 (BSD) サーバーで Perl 5.10 をコンパイルしようとしていますが、Configure スクリプトを実行して質問に答えると、次のエラーが表示されます。

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

答えをグーグルで検索すると、gethostnamadr.c をインストールすることになりました。これは、次の 2 つの点を除いて問題ありません。

  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

「perlはほとんど忘れられている」と言ったSpolskyとは対照的に...perlは非常に生きています。

インストールしたFreeBSDのバージョンを指定していません...しかし、FreeBSD 7.1を最小インストールしたと仮定すると、スレッドライブラリのインストールに失敗したか、スレッドライブラリがライブラリパスにありません。

libcは一般的な「c」ライブラリであり、libc_rはそのファイルのスレッドセーフバージョンであることに注意してください。2005年のグーグルの結果のいくつかは、libc_rが非推奨になったことを示唆しています。

そのことを念頭に置いて、あなたは「リビジョンの衝突」の真っ只中にいる可能性があります。悲しいことに、FreeBSDはスレッドセーフなバージョンのperlをネイティブに提供していませんが、perl5.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 に答える