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

ammouna
źródło

Odpowiedzi:

221

Spróbuj tego:

apt-get install lib32stdc++6
Weź to
źródło
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.

Fabian Knorr
źródło
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

gilm
źródło
8

Dla Red Hat:

sudo yum install libstdc++.i686
sudo yum install libstdc++-devel.i686
Arpit Gupta
źródło
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

Tomasz
źródło
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