Używam Ubuntu 10.04 i chcę używać Tmux 1.6. tmux jest zależny od libevent 2.
Moim rozwiązaniem było skompilowanie libevent2 i /usr/local/lib
wklejenie do niego, a następnie skompilowanie tmux z tą biblioteką lib /usr/local/bin
. Działa to świetnie, dopóki ... nie uruchomię ponownie. To tylko moje założenie, ale wygląda na to, że inne pliki binarne łączą się teraz z biblioteką libevent2, prawdopodobnie dlatego, że znajduje się ona na ścieżce biblioteki. Ponieważ jest ponad 60 pakietów z zależnościami libevent1, powoduje to, że moja instalacja w zasadzie traci rozum.
Czy istnieje idiomatyczny sposób podejścia do uruchamiania aplikacji, która jest zależna od biblioteki podstawowej w innej wersji? Czy powinienem po prostu statycznie powiązać lib?
linux
compile
administration
nsfyn55
źródło
źródło
ldd
. Gdzieś masz zły link symboliczny lub źle nazwany plik. Programy wymagające libevent2 powinny odnosić się do libevent-2.Odpowiedzi:
http://www.ibm.com/developerworks/linux/library/l-lpic1-v3-102-3/ sugeruje
Artykuł powiązany z ilustruje, jak używać ldd, aby dowiedzieć się, od jakich bibliotek zależy program.
źródło
Skompilowane programy binarne zwykle łączą się z /usr/lib/libXXX.so.1.2.3
Jeśli używasz określonej nowej wersji, możesz ją wpuścić,
/usr/lib/libXXX.so.3.4.5
a Twój nowo utworzony program powinien się z tym połączyć.Możesz faktycznie sprawdzić, czy stare programy łączą się teraz z nową biblioteką
ldd /path/to/program
.Jeśli tak się naprawdę stanie, możesz:
/special/path/lib
iLD_LIBRARY_PATH=/special/path/lib:$LD_LIBRARY_PATH
a następnie uruchamia plik binarny lubLDFLAGS=-Wl,-rpath,/special/path/lib
, to na stałe wpisuje ścieżkę wyszukiwania specjalnej biblioteki do swojego programu (fajnie, ponieważ działa bez skryptu opakowania)źródło