libstdc ++. so.6: nie można otworzyć pliku obiektu współdzielonego: nie ma takiego pliku lub katalogu


92

Chcę uruchomić polecenie Cilkscreen z programem cilk ++, ale mam ten błąd

/usr/local/cilk/bin/../lib32/pinbin: błąd podczas ładowania współdzielonych bibliotek: libstdc ++. so.6: nie można otworzyć współdzielonego pliku obiektu: nie ma takiego pliku lub katalogu

Czy możesz mi pomóc

Odpowiedzi:


221

Spróbuj tego:

apt-get install lib32stdc++6

7
Jest to o wiele lepsze niż instalowanie ia32-libs (jak proponuje trion). Robiąc to, musiałem zainstalować 1 lub 2 inne zależności, podczas gdy ia32-libs ma 241 zależności, co daje łącznie 267 MB dodatkowej przestrzeni dyskowej.
Mike

1
Działa to również w przypadku uruchamiania urządzeń wirtualnych Microsoft Windows do testowania programu samorozpakowującego. Dzięki!
Charles Engelke

4
@takeit Czy w przypadku maszyny 64-bitowej powinniśmy zainstalować lib64stdc++6?
boddhisattva

@boddhisattva Myślę, że lib32stdc++6jest to maszyna 64-bitowa z oprogramowaniem 32-bitowym. Coś podobnego do „warstwy zgodności”. Aby uruchomić oprogramowanie 64-bitowe („natywne”) na komputerze 64-bitowym, wystarczy libstdc++6. (Linki dotyczą Ubuntu 14.04 Trusty Tahr; Nie mogę znaleźć linku do Ubuntu 10.10 Maverick Meerkat.)
Franklin Yu,

Niesamowite, chociaż napotkałem ten problem w innej sytuacji, w której próbuję zbudować kod źródłowy Androida, doskonale zorientował się, że problem. Dziękuję bardzo !!! ls
oscarz

15

Zakładam, że używasz Linuksa na maszynie amd64. Folder, w którym znajduje się twój plik wykonywalny ( lib32), sugeruje 32-bitowy plik wykonywalny, który wymaga bibliotek 32-bitowych.

Wydaje się, że nie ma ich w twoim systemie, więc musisz je zainstalować ręcznie. Nazwa pakietu zależy od twojej dystrybucji, w przypadku Debiana jest to ia32-libsFedora libstdc++.<version>.i686.


Używam Linuksa na Ubuntu 10.10
ammouna

Następnie chcesz zrobić to na sposób Debiana i zainstalować ia32-libslub przełączyć się na 64-bitową wersję oprogramowania, którego próbujesz użyć.
Fabian Knorr

Zainstalowałem ten pakiet, ale mam teraz kolejny błąd "proces zabity przez sygnał -7 E: Dołączenie do pid 3874 nie powiodło się: Operacja niedozwolona"
ammouna

Wygląda na to, że próbujesz podłączyć 64-bitowy debugger / monitor do 32-bitowej aplikacji lub odwrotnie? Naprawdę powinieneś spróbować zdobyć komponenty 64-bitowe i stworzyć 64-bitowe pliki wykonywalne; to znacznie ułatwi życie.
Fabian Knorr

1
Jak mogę to zrobić ? Jestem początkującym użytkownikiem Linuksa i nie rozumiem dobrze, jak podłączyć 64-bitowy debugger / monitor do 32-bitowej aplikacji ov / s. czy możesz to wyjaśnić
ammouna,

9

Do użytku Fedory:

yum install libstdc++44.i686

Możesz dowiedzieć się, które wersje są obsługiwane, uruchamiając:

yum list all | grep libstdc | grep i686


8

Dla Red Hat:

sudo yum install libstdc++.i686
sudo yum install libstdc++-devel.i686

1

/usr/local/cilk/bin/../lib32/pinbin jest dynamicznie dowiązany do biblioteki libstdc ++. so.6, której już nie ma. Musisz ponownie skompilować Cilk


ale libstdc ++. so.6 istnieje w folderze / usr / lib
ammouna

1
Tak, ale ponieważ jest to aplikacja 32-bitowa, wymaga /usr/lib32/libstdc++.so.6.
Fabian Knorr
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.