W naszym produkcie dostarczamy pliki binarne Linuksa, które dynamicznie łączą się z bibliotekami systemowymi, takimi jak „libpam”. W niektórych systemach klientów otrzymujemy następujący błąd na stderr po uruchomieniu programu:
./authpam: /lib/libpam.so.0: no version information available (required by authpam)
Aplikacja działa dobrze i wykonuje kod z biblioteki dynamicznej. Więc to nie jest błąd krytyczny, to tak naprawdę tylko ostrzeżenie.
Wydaje mi się, że to błąd pochodzi z dynamicznego konsolidatora, gdy w bibliotece zainstalowanej w systemie brakuje czegoś, czego oczekuje nasz plik wykonywalny. Nie wiem zbyt wiele o wewnętrznych elementach procesu dynamicznego linkowania ... a wyszukiwanie tego tematu w Google niewiele pomaga. :(
Czy ktoś wie, co powoduje ten błąd? ... jak mogę zdiagnozować przyczynę? ... i jak moglibyśmy zmienić nasze pliki wykonywalne, aby uniknąć tego problemu?
Aktualizacja: klient dokonał aktualizacji do najnowszej wersji „testowania” Debiana i wystąpił ten sam błąd. Więc nie jest to przestarzała biblioteka libpam. Chyba chciałbym zrozumieć, na co skarży się linker? Jak mogę zbadać przyczynę itp.?
Fwiw, miałem ten problem podczas uruchamiania check_nrpe w systemie, który miał zainstalowany system monitorowania zenoss. Aby dodać do zamieszania, działał dobrze jako użytkownik root, ale nie jako użytkownik zenoss.
Dowiedziałem się, że użytkownik zenoss miał LD_LIBRARY_PATH, która spowodowała, że używał bibliotek zenoss, które generują te ostrzeżenia. To znaczy:
W każdym razie, co próbuję powiedzieć: sprawdź również zmienne, takie jak LD_LIBRARY_PATH, LD_PRELOAD itp.
źródło
Jak kompilujesz swoją aplikację? Jakie flagi kompilatora?
Z mojego doświadczenia wynika, że gdy celujesz w rozległy obszar systemów Linux, twórz pakiety na najstarszej wersji, którą chcesz obsługiwać, a ponieważ więcej systemów jest kompatybilnych wstecz, Twoja aplikacja będzie nadal działać. Właściwie to jest cały powód wersjonowania bibliotek - zapewnienie kompatybilności wstecznej.
źródło
Widziałeś to już? Przyczyną wydaje się być bardzo stara biblioteka libpam po jednej ze stron, prawdopodobnie po stronie tego klienta.
Lub może brakować linków do wersji: http://www.linux.org/docs/ldp/howto/Program-Library-HOWTO/shared-libraries.html
źródło