Я создаю tmux-2.0
из источников на довольно регулярном хосте Linux. Первая попытка потерпела неудачу, поскольку оказалось, что установленная версия libevent
старше, чем требуется, поэтому я начал сначала загружать и строить libevent-2.0.22
из источников (текущих на момент написания).Как создать программное обеспечение './configure && make && make install' против специальной библиотеки, которую я также создаю?
Строительство libevent
удалось безупречно, и я думал, что я мог бы затем повторить попытку построения tmux
со следующим:
PKG_CONFIG_PATH=$PATH_TO_MY_BUILT_LIBEVENT/lib/pkgconfig ./configure ...
выше призывание удалось, так же последующее make
и make install
.
Запуск мой Новопостроенное tmux
, однако, прерывается с отсутствующим общим объектом, не удивительно libevent-2.0.so.5
:
tmux: error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory
Я думал, что здание с пользовательской библиотеки подразумевает также будет использоваться во время выполнения? ldd
на моем tmux
дает мне:
linux-vdso.so.1 => (0x00007fff8f5ff000)
libutil.so.1 => /lib64/libutil.so.1 (0x0000003cf8800000)
libncurses.so.5 => /lib64/libncurses.so.5 (0x0000003cf7e00000)
libevent-2.0.so.5 => not found
librt.so.1 => /lib64/librt.so.1 (0x0000003ce8600000)
libresolv.so.2 => /lib64/libresolv.so.2 (0x0000003cea200000)
libc.so.6 => /lib64/libc.so.6 (0x0000003ce7600000)
libtinfo.so.5 => /lib64/libtinfo.so.5 (0x0000003cf7200000)
libdl.so.2 => /lib64/libdl.so.2 (0x0000003ce7e00000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003ce8200000)
/lib64/ld-linux-x86-64.so.2 (0x0000003ce7200000)
Так, libevent-2.0.so.5
не найден.
Нужно ли мне прибегать к установке, я не знаю, LIBS
, LDFLAGS
или некоторые другие переменные или переключается на configure
сценарий выше, так что, я не знаю, пути к моей недавно построенный libevent
заделаны в tmux
двоичный, любезно предоставлен ld
?
I не имеет root access - университет Linux рабочая станция - и, откровенно говоря, мне он не нужен, я думаю. Я также не хочу гадать с LD_LIBRARY_PATH
или тому подобное. Достаточно сказать, что LD_LIBRARY_PATH=$PATH_TO_MY_LIBEVENT/lib tmux
отлично работает. Но я хочу, чтобы он работал «по умолчанию», найдя и используя мой libevent
.
Я предполагаю, что решение применимо практически ко всем программным средствам, использующим «систему сборки GNU». Какая здесь правильная вещь?
Я не знаю специфики для «tmux» или вашей среды Linux. Но в общем, вы бы 1) 'make clean': удалить текущие бинарные файлы; 2) './Configure': у GNU-сборки можно изменить настройки сборки для вашей среды. Предположительно, это должно обнаружить 'libevent-2.0.22'. Наконец, 3) 'make && make install': перестроить с нуля. – paulsm4
Привет, paulsm4, почему вы уверены, что './Configure' (без переключателей, я предполагаю?) Должен обнаружить' libevent-2.0.22'? Я не ожидаю этого - я мог бы построить библиотеку где угодно, это не похоже на то, что сценарий выполняет рекурсивную находку, начиная с '/' или чего-то еще. Но он * должен * действительно использовать его *, если * я говорю ему использовать файлы 'pkg-config', проживающие по пути, указанному переменной' PKG_CONFIG_PATH', что я и сделал. Все строит отлично, просто встроенный двоичный файл не может найти библиотеку, которая, предположительно, была './configure'd! – amn