FreeBSD 7.1でスレッドサポートを使用してPerl 5.10をコンパイルするにはどうすればよいですか?
-
03-07-2019 - |
質問
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つの点を除いて問題ありません:
- このファイルを配置する場所がわからない
- 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