FreeBSD 7.1でスレッドサポートを使用してPerl 5.10をコンパイルするにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/814285

質問

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を見たい場合、これはどのように私の問題を解決しますか?
役に立ちましたか?

解決

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

他のヒント

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

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

注意:libcは一般的な 'c'ライブラリであり、libc_rはそのファイルのスレッドセーフバージョンです。 2005年のGoogleの結果のいくつかは、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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top