Ich möchte tmux auf einem Computer installieren, auf dem ich keinen Root-Zugriff habe. Ich habe bereits libevent kompiliert und installiert es in $HOME/.bin-libevent
und jetzt will ich tmux kompilieren, aber konfigurieren endet immer mit configure: error: "libevent not found"
, auch wenn ich auf das libevent Verzeichnis in der Punkt versucht Makefile.am
durch Modifizieren LDFLAGS
und CPPFLAGS
, aber nichts scheint zu funktionieren.
Wie kann ich das System anweisen, in meinem Home-Verzeichnis nach dem libevent zu suchen?
Antworten:
Versuchen:
(Ich bin sicher, dass es eine bessere Möglichkeit geben muss, Bibliothekspfade mit autoconf zu konfigurieren. Normalerweise gibt es eine
--with-libevent=dir
Option. Aber hier scheint es keine solche Option zu geben.)quelle
make
schließlich funktioniert hat. Ich habe versucht , andere Einstellung von Umgebungsvariablen und Einstellungprefix
undexec-prefix
, aber sobald ich diese Flags enthalten Zeug tatsächlich gebaut../configure CFLAGS="-I$DIR/include:/usr/otherdir" LDFLAGS="-L$DIR/lib:/usr/otherdir"
aber keinen ErfolgCFLAGS="-Idir1 -Idir2 -Idir3" LDFLAGS="-Ldira -Ldirb -Ldirb"
libevent not found
Fehler ging weg, aber jetzt bekomme ich das gleiche mitncurses
:curses not found
. Sowohl meinelibevent
als auch meinencurses
Installationen sind in$HOME/.local/
libevent
verwendenLIBEVENT_CFLAGS
undLIBEVENT_LIBS
stattCFLASG
undLDFLAGS
. Fürncurse
verwendenLIBTINFO_CFLAGS
undLIBTINFO_LIBS
@AalokIch hatte ein ähnliches Problem und stellte fest, dass
sudo yum install libevent-devel
ich nach dem Ausführen tmux erfolgreich erstellen und installieren konnte.BEARBEITEN: Wenn Sie dies auf einem Red Hat-Computer installieren, müssen Sie auch die Kanalauswahl für Ihren Server im Red Hat-Netzwerk aufrufen und den Kanal RHEL Server Optional hinzufügen. Dadurch erhalten Sie Zugriff auf die -devel-Pakete für libevent (der Basis- und der Zusatzkanal stellen dies nicht zur Verfügung).
quelle
Ich hatte das gleiche Problem auf RHEL 5.4 und fand tatsächlich, dass libevent installiert ist, aber es gibt keinen libevent.so-Symlink, nur die echte Version der Bibliothek:
Funktioniert also
ln -s /usr/lib64/libevent-1.1a.so.1 /usr/lib64/libevent.so
ziemlich gut für mich, ohne dass etwas installiert oder geändert werden muss. Keine Ahnung, warum RedHats libevent rpm den Symlink nicht erzeugt hat. Vielleicht ein Fehler zu melden?Aber jetzt, es ist für diese beschweren:
error: event.h: No such file or directory
.quelle
error: event.h: No such file or directory
.tmux='LD_PRELOAD=/opt-local/lib/libevent-2.0.so.5 /opt-local/bin/tmux'
. Klappt wunderbar!Bevor Sie tmux (oder ein anderes Programm) konfigurieren und kompilieren können, müssen Sie ihm mitteilen, wo sich die benötigten Bibliotheken befinden. Wenn Sie eine Bibliothek an einem nicht standardmäßigen Speicherort installiert haben, können Sie anhand der Umgebungsvariablen
LD_LIBRARY_PRELOAD
feststellen, wo sich einige Bibliotheken befinden.Ich dein Fall:
Und dann weiter mit der Konfiguration / Kompilierung.
Später muss die Binärdatei auch wissen, wo sich Ihre zusätzlichen Bibliotheken befinden. Daher müssen Sie die
export
Anweisung in Ihre.bashrc
einfügen (wenn bash Ihre Anmeldeshell ist).quelle
find .bin-libevent -name 'libevent.so*'
zeigt?$ find .bin-libevent -name 'libevent.so*'
Funde.bin-libevent/lib/libevent.so
$HOME/.bin-libevent/lib
(aktualisierte die Antwort)Es gibt eine Übersicht unter https://gist.github.com/ryin/3106801 :
quelle
ncurses
Unterverzeichnis des angegebenen include / library-Pfads installiert . Seltsame Designauswahl. Das hat es für mich behoben.Ich habe das gleiche Problem, und es scheint, dass die am besten bewertete Antwort bei mir nicht funktioniert hat. Ich benutze Fedora 22 Workstation. Folgendes habe ich getan, um das Problem zu beheben: 1. Installieren Sie das
libevent-devel
Paket. 2.ncurses-devel
Paket installierenErstens wird man kein
event.h
Problem lösen und zweitens kann man kein Fluchproblem finden. Übrigens funktioniert die obige Softlink-Methode auch bei mir während./configure
.quelle
Die akzeptierte Antwort ist gut, aber ab tmux 2.8 gibt es Unterstützung für die Angabe des Speicherorts für Ereignisse mithilfe von Umgebungsvariablen.
Installieren Sie zuerst libevent am gewünschten Ort. Ich habe cmake verwendet, weil ich ein Problem mit der Autokonfiguration hatte
Dann baue und installiere tmux:
Die
LIBEVENT_CFLAGS
Überschreibungen der Umgebungsvariablenpkg-config
umfassen Einstellungen für libevent undLIBEVENT_LIBS
überschreiben die Einstellungen für das Linker-Flag.quelle
Kompilieren und installieren Sie unter CentOS 6 libevent im
/opt/libevent
Verzeichnis mit dem folgenden Befehl:Dann installiere meine Anwendung (in diesem Fall war es PgBouncer)
Sie können die Verzeichnisse beliebig ändern.
quelle