Как мне скомпилировать Perl 5.10 с поддержкой потоков под FreeBSD 7.1? - PullRequest
5 голосов
/ 02 мая 2009

Я пытаюсь скомпилировать Perl 5.10 на моем сервере FreeBSD 7.1 (BSD), но когда я запускаю скрипт Configure и отвечаю на вопросы, я получаю следующую ошибку:

...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?

Ответы [ 2 ]

4 голосов
/ 02 мая 2009

Чтобы включить потоки Perl 5.10 во FreeBSD 7. * Все, что вам нужно сделать, это применить следующий патч, используя patch. Затем вы можете собрать perl с -Dusethreads или ответить на вопросы файла 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 .

2 голосов
/ 02 мая 2009

В отличие от Спольски, который сказал: «Perl в значительной степени забыт» ... Perl очень жив.

Вы не указали, какую версию FreeBSD вы установили ... Но, если вы установили минимум FreeBSD 7.1, то вам не удалось установить библиотеки потоков, или библиотеки потоков не находятся в пути библиотеки.

ОБРАТИТЕ ВНИМАНИЕ, что libc является общей библиотекой 'c' и что libc_r является поточно-ориентированной версией этого файла. Некоторые результаты Google за 2005 год показывают, что libc_r устарела.

Имея это в виду, вполне вероятно, что вы находитесь в середине "ревизионного столкновения". К сожалению, FreeBSD не предоставляет нативно-ориентированную версию perl, однако они делают пакет perl 5.10 и несколько более поздних версий. Я нашел эту ссылку полезной:

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

вы также можете попробовать установить библиотеку p5-fork, которая включена в FreeBSD

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

...