Saya ingin menginstal tmux pada mesin di mana saya tidak memiliki akses root. Saya sudah mengkompilasi libevent dan menginstalnya $HOME/.bin-libevent
dan sekarang saya ingin mengkompilasi tmux, tetapi konfigurasi selalu berakhir dengan configure: error: "libevent not found"
, meskipun saya mencoba untuk menunjuk ke direktori libevent di Makefile.am
dengan memodifikasi LDFLAGS
dan CPPFLAGS
, tetapi sepertinya tidak ada yang berhasil.
Bagaimana saya bisa memberi tahu sistem untuk mencari di direktori home saya untuk libevent?
Jawaban:
Mencoba:
(Saya yakin pasti ada cara yang lebih baik untuk mengkonfigurasi jalur perpustakaan dengan autoconf. Biasanya ada
--with-libevent=dir
opsi. Tapi di sini, sepertinya tidak ada opsi seperti itu.)sumber
make
akhirnya berhasil. Saya mencoba mengatur variabel dan pengaturan lingkungan lainnyaprefix
danexec-prefix
, tapi begitu saya memasukkan flag-flag ini, sebenarnya dibangun../configure CFLAGS="-I$DIR/include:/usr/otherdir" LDFLAGS="-L$DIR/lib:/usr/otherdir"
tetapi tidak berhasilCFLAGS="-Idir1 -Idir2 -Idir3" LDFLAGS="-Ldira -Ldirb -Ldirb"
libevent not found
kesalahan pergi, tapi sekarang saya mendapatkan yang sama denganncurses
:curses not found
. Sayalibevent
danncurses
instalasi keduanya di$HOME/.local/
libevent
, gunakanLIBEVENT_CFLAGS
danLIBEVENT_LIBS
bukannyaCFLASG
danLDFLAGS
. Untukncurse
, gunakanLIBTINFO_CFLAGS
danLIBTINFO_LIBS
@AokokSaya mengalami masalah yang sama dan menemukan bahwa setelah menjalankan
sudo yum install libevent-devel
saya berhasil membuat dan menginstal tmux.EDIT: Jika Anda menginstal ini pada mesin Red Hat, Anda juga harus mengunjungi pilihan saluran untuk server Anda di Red Hat Network dan menambahkan saluran RHEL Server Opsional. Ini akan memberi Anda akses ke paket -devel untuk libevent (saluran dasar dan tambahan tidak menyediakannya).
sumber
Saya memiliki masalah yang sama pada RHEL 5.4 dan benar-benar menemukan libevent diinstal tetapi tidak ada symlink libevent.so, hanya versi nyata dari perpustakaan:
Jadi,
ln -s /usr/lib64/libevent-1.1a.so.1 /usr/lib64/libevent.so
berfungsi cukup baik untuk saya tanpa perlu menginstal atau mengubah apa pun. Tidak tahu mengapa rpm RedHat tidak membuat symlink. Mungkin bug untuk dilaporkan?Tapi sekarang, itu mengeluh untuk ini:
error: event.h: No such file or directory
.sumber
error: event.h: No such file or directory
.tmux='LD_PRELOAD=/opt-local/lib/libevent-2.0.so.5 /opt-local/bin/tmux'
. Bekerja seperti pesona!Sebelum konfigurasi dan kompilasi tmux (atau program apa pun), Anda harus memberi tahu di mana ia dapat menemukan perpustakaan yang dibutuhkan. Jika Anda telah menginstal beberapa perpustakaan di lokasi non-standar, Anda dapat menggunakan variabel lingkungan
LD_LIBRARY_PRELOAD
untuk memberi tahu, di mana beberapa perpustakaan berada.Saya kasus Anda:
Dan kemudian lanjutkan dengan konfigurasi / kompilasi.
Kemudian, biner juga perlu tahu di mana perpustakaan tambahan Anda dapat ditemukan, jadi Anda harus menempatkan
export
pernyataan di.bashrc
(jika bash adalah shell login Anda).sumber
find .bin-libevent -name 'libevent.so*'
ditunjukkan?$ find .bin-libevent -name 'libevent.so*'
menemukan.bin-libevent/lib/libevent.so
$HOME/.bin-libevent/lib
(memperbarui jawabannya)Ada intisari di https://gist.github.com/ryin/3106801 :
sumber
ncurses
subdirektori dari jalur include / library apa pun yang Anda tentukan. Pilihan desain yang aneh. Ini memperbaikinya untuk saya.Saya memiliki masalah yang sama dan sepertinya jawaban yang paling banyak dipilih tidak bekerja untuk saya. Saya menggunakan Fedora 22 Workstation. Inilah yang saya lakukan untuk memperbaikinya: 1. Instal
libevent-devel
paket. 2. Instalncurses-devel
paketYang pertama tidak akan menyelesaikan
event.h
masalah dan yang kedua tidak akan menemukan masalah kutukan. BTW, metode softlink di atas juga berfungsi untuk saya selama./configure
.sumber
Jawaban yang diterima baik, tetapi setidaknya tmux 2.8 ada dukungan untuk menentukan lokasi libevent menggunakan variabel lingkungan.
Pertama instal libevent di lokasi yang diinginkan. Saya menggunakan cmake karena saya punya masalah dengan autoconf
Kemudian buat dan instal tmux:
Variabel lingkungan
LIBEVENT_CFLAGS
menimpapkg-config
mencakup pengaturan untuk libevent, danLIBEVENT_LIBS
menimpa pengaturan linker bendera.sumber
Pada CentOS 6, kompilasi dan instal libevent di
/opt/libevent
direktori dengan perintah:Kemudian, instal aplikasi saya (dalam hal ini adalah PgBouncer)
Anda dapat mengubah direktori di mana pun Anda inginkan.
sumber