make[2]: *** [libevent.la] Ошибка 1

Я пытаюсь установить libevent-2.0.12-stable на Centos, но когда я набираю sudo make, возникает ошибка (я сделал ./configure до make):

/bin/sh ./libtool --tag=CC   --mode=link gcc  -g -O2 -Wall -fno-strict-aliasing -pthread -version-info 6:1:1 -release 2.0   -o libevent.la -rpath /usr/local/libevent-2.0.12-stable/lib event.lo evthread.lo buffer.lo bufferevent.lo bufferevent_sock.lo bufferevent_filter.lo bufferevent_pair.lo listener.lo bufferevent_ratelim.lo evmap.lo log.lo evutil.lo evutil_rand.lo strlcpy.lo select.lo poll.lo   epoll.lo  signal.lo event_tagging.lo http.lo evdns.lo evrpc.lo  -lrt 
libtool: link: gcc -shared  -fPIC -DPIC  .libs/event.o .libs/evthread.o .libs/buffer.o .libs/bufferevent.o .libs/bufferevent_sock.o .libs/bufferevent_filter.o .libs/bufferevent_pair.o .libs/listener.o .libs/bufferevent_ratelim.o .libs/evmap.o .libs/log.o .libs/evutil.o .libs/evutil_rand.o .libs/strlcpy.o .libs/select.o .libs/poll.o .libs/epoll.o .libs/signal.o .libs/event_tagging.o .libs/http.o .libs/evdns.o .libs/evrpc.o   -lrt  -O2 -pthread   -pthread -Wl,-soname -Wl,libevent-2.0.so.5 -o .libs/libevent-2.0.so.5.1.1
/usr/bin/ld: /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../lib64/librt.a(clock_gettime.o): relocation R_X86_64_PC32 against undefined symbol `__errno_location@@GLIBC_2.2.5' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: Bad value
collect2: ld returned 1 exit status
make[2]: *** [libevent.la] Error 1
make[2]: Leaving directory `/home/lpchou/software/httpsqs/libevent-2.0.12-stable'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/lpchou/software/httpsqs/libevent-2.0.12-stable'
make: *** [all] Error 2

Кто-нибудь может помочь? Спасибо.

Обновлять

После того, как я успешно установил libevent с пакетом rpm, как указано @KnudLarsen, я пытаюсь установить tokyocabinet с помощью make, однако возникает та же ошибка:

/usr/bin/ld: /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../lib64/libm.a(s_sin.o): relocation R_X86_64_32S against `.rodata' can not be used when making a shared object; recompile with -fPIC
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../lib64/libm.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
make: *** [libtokyocabinet.so.9.10.0] Error 1

Я пробовал методы в Перекомпиляция с -fPIC, но не работает. Кажется, не хватает некоторых зависимых пакетов, потому что я просто устанавливаю libevent и tokyocabinet на другой машине Centos, и все работает нормально.


person chou    schedule 22.06.2016    source источник
comment
? Какая версия CentOS это будет? cat etc/redhat-release .... (CentOS 6.x имеет версию libevent 1.4.13.) .. libevent-2.0.13-14.2.x86_64.rpm для CentOS 6 доступен в Интернете: rpm.pbone.net   -  person Knud Larsen    schedule 22.06.2016
comment
Вы прочитали и поняли ту часть, которая говорит recompile with -fPIC?   -  person tripleee    schedule 23.06.2016
comment
@KnudLarsen Версия 6.2, я устанавливаю libevent-2.0.13-14.2.x86_64.rpm, и все в порядке, но затем у меня возникает та же проблема, когда я устанавливаю tokyocabinet.   -  person chou    schedule 23.06.2016
comment
@tripleee я заметил перекомпиляцию с -fPIC. Но так как я новичок, я не знаю, что это значит, что мне делать? Попробуйте «sudo make -fPIC»?   -  person chou    schedule 23.06.2016
comment
О libm.a: предполагается, что у вас есть (скомпилированный -fPIC) /usr/lib64/libm.so... из glibc-devel: т.е. # yum install gcc-c++ даст вам все необходимое для полноценной работы gcc.   -  person Knud Larsen    schedule 24.06.2016


Ответы (1)



CentOS 6.8 — 64 бита:

tokyocabinet-1.4.32 строит нормально: libtokyocabinet.so.8.23.0, libtokyocabinet.a

tokyocabinet-1.4.48 также в порядке: libtokyocabinet.so.9.11.0, libtokyocabinet.a

... Итак, я думаю, вам нужно установить / переустановить требования к сборке для gcc:

yum reinstall gcc-c++ glibc-devel glibc-headers kernel-headers

... чтобы иметь правильные файлы /usr/lib64/ и /usr/include/.

? Какую версию tokyocabinet вы пытаетесь собрать? И где вы его взяли?



person Knud Larsen    schedule 24.06.2016
comment
версия 1.4.47, после переустановки gcc-c++ glibc-devel glibc-headers заголовков ядра и попытки переустановить tokyocabinet возникает та же ошибка. Думаю проблема не в версии. - person chou; 25.06.2016
comment
При вводе 'ls -l' в /usr/lib64/ есть libm.so, но это ссылка на '../../lib64/libm.so.6', имеет ли это значение? - person chou; 27.06.2016
comment
@чоу. Да, так оно и есть: /usr/lib64/libm.so -> ../../lib64/libm.so.6 - person Knud Larsen; 27.06.2016
comment
Да, здесь ../../lib64/libm.so.6 это /lib64/libm.so.6 - person chou; 28.06.2016