почему gcc не может найти libevent при сборке tmux из исходного кода?

<p>я хочу установить tmux на компьютер, на котором у меня нет прав root. я уже скомпилировал libevent и установил его в <code>$home/.bin-libevent и теперь я хочу скомпилировать tmux, но настройка всегда заканчивается configure: error: "libevent not found", хотя я пытался указать на каталог libevent в makefile.am, изменив ldflags и cppflags, но, похоже, ничего не работает.как я могу сказать системе искать в моем домашнем каталоге файл libevent?

пытаться:dir="$home/.bin-libevent" ./configure cflags="-i$dir/include" ldflags="-l$dir/lib" </code></pre><p>(я уверен, что должен быть лучший способ настроить пути к библиотекам с помощью autoconf. обычно есть <code>--with-libevent=dir</code> вариант. но тут, похоже, такой опции нет.)</p>

<p>у меня была похожая проблема, и я обнаружил, что после запуска <code>sudo yum install libevent-devel</code> мне удалось успешно создать и установить tmux.</p><p>правка: если вы устанавливаете это на компьютере red hat, вам также необходимо посетить выбор каналов для вашего сервера в сети red hat network и добавить дополнительный канал rhel server. это даст вам доступ к пакетам -devel для libevent (базовый и дополнительный каналы не предоставляют его).</p>

<p>у меня была та же проблема с rhel 5.4, и я обнаружил, что libevent установлен, но нет символической ссылки libevent.so, только реальная версия библиотеки:</p><pre><code>/usr/lib64/libevent-1.1a.so.1 /usr/lib64/libevent-1.1a.so.1.0.2 </code></pre><p>так, <code>ln -s /usr/lib64/libevent-1.1a.so.1 /usr/lib64/libevent.so</code> работает довольно хорошо для меня без необходимости устанавливать или изменять что-либо. понятия не имею, почему свободный rpm redhat не создал символическую ссылку. может быть, ошибка, чтобы сообщить?</p><p>но теперь, это жалуется на это: <code>error: event.h: no such file or directory</code>.</p>

<p>перед настройкой и компиляцией tmux (или любой другой программы) вы должны сообщить ему, где он может найти нужные библиотеки. если вы установили какую-то библиотеку в нестандартном месте, вы можете использовать переменную среды <code>ld\_library\_preload</code> рассказать, где расположены некоторые библиотеки.</p><p>я твой случай:</p><pre><code>$ export ld_library_preload=$home/.bin-libevent/lib </code></pre><p>а затем продолжите настройку/компиляцию.</p><p>позже двоичный файл также должен будет знать, где можно найти ваши дополнительные библиотеки, поэтому вам нужно будет поместить оператор <code>export</code> в ваш <code>.bashrc</code> (если bash - это ваша учетная запись shell).</p>

<p>суть есть в <a href="https://gist.github.com/ryin/3106801">https://gist.github.com/ryin/3106801</a> :</p><pre><code>#!/bin/bash # script for installing tmux on systems where you don't have root access. # tmux will be installed in $home/local/bin. # it's assumed that wget and a c/c++ compiler are installed. # exit on error set -e tmux_version=1.8 # create our directories mkdir -p $home/local $home/tmux_tmp cd $home/tmux\_tmp # download source files for tmux, libevent, and ncurses wget -o tmux-${tmux_version}.tar.gz http://sourceforge.net/projects/tmux/files/tmux/tmux-${tmux\_version}/tmux-${tmux_version}.tar.gz/download wget https://github.com/downloads/libevent/libevent/libevent-2.0.19-stable.tar.gz wget ftp://ftp.gnu.org/gnu/ncurses/ncurses-5.9.tar.gz # extract files, configure, and compile ############ # libevent # ############ tar xvzf libevent-2.0.19-stable.tar.gz cd libevent-2.0.19-stable ./configure --prefix=$home/local --disable-shared make make install cd .. ############ # ncurses # ############ tar xvzf ncurses-5.9.tar.gz cd ncurses-5.9 ./configure --prefix=$home/local make make install cd .. ############ # tmux # ############ tar xvzf tmux-${tmux\_version}.tar.gz cd tmux-${tmux_version} ./configure cflags="-i$home/local/include -i$home/local/include/ncurses" ldflags="-l$home/local/lib -l$home/local/include/ncurses -l$home/local/include" cppflags="-i$home/local/include -i$home/local/include/ncurses" ldflags="-static -l$home/local/include -l$home/local/include/ncurses -l$home/local/lib" make cp tmux $home/local/bin cd .. # cleanup rm -rf $home/tmux_tmp echo "$home/local/bin/tmux is now available. you can optionally add $home/local/bin to your path." 

принятый ответ хорош, но по крайней мере в tmux 2.8 есть поддержка для определения местоположения libevent с помощью переменных среды.сначала установите libevent в нужном месте. я использовал cmake, потому что у меня была проблема с autoconfcmake -dcmake_install_prefix=$home/usr .. make install </code></pre><p>затем соберите и установите tmux:</p><pre><code>export libevent\_cflags=-i${home}/usr/include export libevent_libs="-l${home}/usr/lib -levent" ./configure --prefix=$home/usr make install переменная среды libevent_cflags переопределяет pkg-config включить настройки для libevent и libevent_libs переопределяет настройки флага компоновщика.

у меня та же проблема, и кажется, что самый голосующий ответ не сработал для меня. я использую рабочую станцию fedora 22. вот что я сделал, чтобы это исправить: 1. установите libevent-devel пакет. 2. установите ncurses-devel пакет$ dnf install libevent-devel` $ dnf install ncurses-devel </code></pre><p>первый решит не <code>event.h</code> проблема, и вторая решит, не может найти проблему проклятий. кстати, метод softlink выше также работает для меня во время <code>./configure</code>.</p>