Próbuję zainstalować to oprogramowanie o nazwie Skedler. Ich dokumentacja wspomina o zależnościach biblioteki GLIBCXX, ale nie przeszkadzało im to, podając instrukcje instalacji.

GLIBCXX libraries Skedler has dependency on libstdc++ library. Following are the GLIBCXX versions the code depends on libstdc++.so.6 (GLIBCXX_3.4.9) => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 libstdc++.so.6 (GLIBCXX_3.4.15) => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 libstdc++.so.6 (GLIBCXX_3.4) => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 To check the versions on your server. Please run the command CentOS strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX Debian/Ubuntu strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX If the version is not available, update the GCC compiler 

Uruchomienie polecenia grep daje no such file found w systemie Ubuntu 18.04. Próbowałem także sudo apt-get install libstdc++ i kilku innych poleceń, ale nic nie wydaje się instalować wymaganych bibliotek.

Odpowiedź

Sugerowana nazwa ścieżki do sprawdzenia nie jest dokładna dla współczesnego Debiana / Ubuntu. Polecenie powinno prawdopodobnie wyglądać następująco:

strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX 

A ten segment wygląda jak część wyników polecenia ldd:

libstdc++.so.6 (GLIBCXX_3.4.9) => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 libstdc++.so.6 (GLIBCXX_3.4.15) => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 libstdc++.so.6 (GLIBCXX_3.4) => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 

Fakt, że nie ma tekstu not found po strzałce w którymkolwiek z tych trzech wierszy oznacza, że plik binarny, został przetestowany przez program instalacyjny, znalazł w bibliotece wszystko, czego potrzebował. Wygląda więc na to, że ta zależność jest już obsługiwana przez Twój system.

Nawiasem mówiąc, dane wyjściowe Skedlera wyglądają nieco zagmatwane, jeśli chodzi o nazwę biblioteki. Najbardziej widoczną dla użytkownika nazwą powinna być w rzeczywistości libstdc++.

W Debianie 9 są obecnie dostępne dwie wersje libstdc++: aktualna wersja jest spakowana jako libstdc++6, a starsza wersja, która była popularna w różnych zastrzeżonych programach, jest spakowana jako libstdc++5. Wydaje mi się, że Ubuntu może mieć dostępne warianty o podobnych nazwach.

Nazwa GLIBCXX jest prefiksem nazw symboli wersji w bibliotece. Zwykle byłoby to bardziej powiązane z rzeczywistą nazwą biblioteki (bez przedrostka „lib”), ale w tym przypadku znaki plus są problemem, dlatego są zastępowane znakami X.

(Stary libstdc++5 używał innego ABI, który jest niekompatybilny z obecnym, a w jego symbolach wersji używany był przedrostek GLIBCPP).

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *