Chcę zainstalować tmux na komputerze, na którym nie mam dostępu do roota. Już skompilowałem libevent i zainstalowałem go, $HOME/.bin-libevent
a teraz chcę skompilować tmux, ale konfiguracja zawsze kończy się na configure: error: "libevent not found"
, mimo że próbowałem wskazać katalog libevent w Makefile.am
modyfikując LDFLAGS
i CPPFLAGS
, ale nic nie działa.
Jak mogę powiedzieć systemowi, aby szukał libevent w moim domowym katalogu?
Odpowiedzi:
Próbować:
(Jestem pewien, że musi istnieć lepszy sposób konfigurowania ścieżek bibliotek za pomocą autoconf. Zwykle jest
--with-libevent=dir
opcja. Ale tutaj wydaje się, że nie ma takiej opcji).źródło
make
końcu zadziałało. Próbowałem ustawić inne zmienne środowiskowe i ustawieniaprefix
iexec-prefix
, ale kiedy już załączyłem te flagi, rzeczy faktycznie powstały../configure CFLAGS="-I$DIR/include:/usr/otherdir" LDFLAGS="-L$DIR/lib:/usr/otherdir"
ale bez powodzeniaCFLAGS="-Idir1 -Idir2 -Idir3" LDFLAGS="-Ldira -Ldirb -Ldirb"
libevent not found
błąd odszedł, ale teraz mam to samo zncurses
:curses not found
. Zarówno moja,libevent
jak incurses
instalacje są w$HOME/.local/
libevent
, użyjLIBEVENT_CFLAGS
iLIBEVENT_LIBS
zamiastCFLASG
iLDFLAGS
. Forncurse
, useLIBTINFO_CFLAGS
iLIBTINFO_LIBS
@AalokMiałem podobny problem i odkryłem, że po uruchomieniu
sudo yum install libevent-devel
mogłem z powodzeniem utworzyć i zainstalować tmux.EDYCJA: Jeśli instalujesz to na maszynie Red Hat, musisz także odwiedzić wybór kanałów dla swojego serwera w sieci Red Hat Network i dodać opcjonalny kanał RHEL Server. To da ci dostęp do pakietów -devel dla libevent (nie zapewniają go kanały podstawowe i dodatkowe).
źródło
Miałem ten sam problem na RHEL 5.4 i faktycznie znalazłem libevent jest zainstalowany, ale nie ma dowiązania symbolicznego libevent.so, tylko prawdziwa wersja biblioteki:
Więc
ln -s /usr/lib64/libevent-1.1a.so.1 /usr/lib64/libevent.so
działa całkiem dobrze dla mnie bez potrzeby instalowania lub zmieniania czegokolwiek. Nie mam pojęcia, dlaczego libevent rpm RedHata nie utworzył dowiązania symbolicznego. Może błąd do zgłoszenia?Ale teraz, to podbiega do tego:
error: event.h: No such file or directory
.źródło
error: event.h: No such file or directory
.tmux='LD_PRELOAD=/opt-local/lib/libevent-2.0.so.5 /opt-local/bin/tmux'
. Działa jak marzenie!Przed konfiguracją i kompilacją tmux (lub dowolnego programu) musisz powiedzieć mu, gdzie może znaleźć potrzebne biblioteki. Jeśli zainstalowałeś bibliotekę w niestandardowej lokalizacji, możesz użyć zmiennej środowiskowej,
LD_LIBRARY_PRELOAD
aby określić, gdzie znajdują się niektóre biblioteki.Ja twoja sprawa:
Następnie przejdź do konfiguracji / kompilacji.
Później plik binarny będzie również musiał wiedzieć, gdzie można znaleźć twoje dodatkowe biblioteki, więc musisz umieścić
export
instrukcję w swoim.bashrc
(jeśli bash jest twoją powłoką logowania).źródło
find .bin-libevent -name 'libevent.so*'
pokazuje$ find .bin-libevent -name 'libevent.so*'
znaleziska.bin-libevent/lib/libevent.so
$HOME/.bin-libevent/lib
(zaktualizowano odpowiedź)Jest sedno na https://gist.github.com/ryin/3106801 :
źródło
ncurses
podkatalogu dowolnej podanej ścieżki dołączania / biblioteki. Dziwny wybór projektu. Naprawiłem to dla mnie.Mam ten sam problem i wydaje się, że najbardziej pozytywna odpowiedź nie zadziałała dla mnie. Używam stacji roboczej Fedora 22. Oto, co zrobiłem, aby to naprawić: 1. Zainstaluj
libevent-devel
pakiet. 2. Zainstalujncurses-devel
pakietPierwszy nie rozwiąże
event.h
problemu, a drugi rozwiąże problem przekleństw. BTW, powyższa metoda softlink również działa dla mnie podczas./configure
.źródło
Przyjęta odpowiedź jest dobra, ale przynajmniej od wersji tmux 2.8 istnieje obsługa określania libevent położenia za pomocą zmiennych środowiskowych.
Najpierw zainstaluj libevent w wybranej lokalizacji. Użyłem cmake, ponieważ miałem problem z autoconf
Następnie skompiluj i zainstaluj tmux:
Zmienna środowiskowa
LIBEVENT_CFLAGS
nadpisujepkg-config
obejmują ustawienia libevent iLIBEVENT_LIBS
nadpisuje ustawienia flag łącznikiem.źródło
Na CentOS 6 skompiluj i zainstaluj libevent w
/opt/libevent
katalogu za pomocą polecenia:Następnie zainstaluj moją aplikację (w tym przypadku był to PgBouncer)
Możesz zmieniać katalogi gdziekolwiek chcesz.
źródło