2015-05-08 12 views
9

Ich habe Cygwin nach dem Ausführen von MinGW für eine Weile installiert. Aber wenn ich versuche, die Konsole zu kompilieren gibt mir:Cygwin Gcc-Fehler beim Laden gemeinsamer Bibliotheken?

/usr/lib/gcc/x86_64-pc-cygwin/4.9.2/cc1.exe: error while loading shared libraries: ?: cannot open shared object file: No such file or directory 

Was bedeutet das?

Antwort

6

Ich habe das gleiche Problem und ich fand die Lösung.

Nach der FAQ von Cygwin

F: Warum ist C: \ cygwin \ usr \ sind unsichtbar aus den Fenstern?

A: Weil es nicht wirklich existiert. In Cygwin ist/usr/bin nur ein Link zu/bin.

So versuchen, "C: \ cygwin \ usr \ bin" PATH hinzufügen wird vergeblich sein.

Fügen Sie stattdessen "C: \ cygwin64 \ bin" zu PATH hinzu. Hoffe, das hilft :)

0

Fügen Sie den Pfad zu Ihrem lib-Verzeichnis ein? Sieht aus wie Sie nicht

sind bin ich nicht sehr vertraut mit Cygwin, ich hauptsächlich MinGW verwenden, aber ich denke, dass die Fehlermeldung für sich

+0

Einschließlich in den Build-Befehlen meinen Sie? – BRHSM

0

spricht (ich lieber zuerst eine Frage in den Kommentaren fragen würde, aber ich habe noch nicht genug Ruf.)

Ihr cc1 kann einige DLLs nicht laden, die es zum Starten benötigt. Betrachtet man den Cygwin-Quellcode, kann dies entweder eine Bibliothek sein, die in LD_PRELOAD angegeben ist, oder - wahrscheinlicher - eine Bibliothek, von der die ausführbare Datei abhängt. Die ? in der Fehlermeldung scheint der Standard-Rückgabewert von find_first_notloaded_dll (hookapi.cc) zu sein, falls die Funktion nicht feststellen kann, welche Bibliothek fehlt.

Um das Problem zu diagnostizieren, schlage ich vor, Ihre PATH Variable (oder sogar Clearing sie von allen Nicht-Cygwin Wege und versuchen, die Zusammenstellung wieder) und/oder mit Dependency Walker Überprüfung der fehlenden DLLs (starten Sie es von einem Cygwin-Shell zu finden, so kann es das gleiche sehen PATH). ldd (im Lieferumfang von Cygwin) kann auch Hinweise geben, aber ich würde nicht darauf wetten.

Es ist möglich, dass eine saubere Neuinstallation von Cygwin erforderlich ist, um das Problem zu lösen.

5

Sie vermissen eine Bibliothek, führen Sie bitte cygcheck /usr/lib/gcc/x86_64-pc-cygwin/4.9.2/cc1.exe oder ldd /usr/lib/gcc/x86_64-pc-cygwin/4.9.2/cc1.exe, um zu sehen, was die fehlende Bibliothek ist.

+0

Ich habe das, was mache ich jetzt Command-Ausgabe: http://imgur.com/LfgcLw9 – BRHSM

+0

Sie müssen möglicherweise einige Cygwin-Pakete vielleicht neu installieren. Wie gesagt [http://unix.stackexchange.com/questions/77779/relationship-between-cc1-and-gcc]: "' cc1.exe "ist der interne Befehl, der vorverarbeitete C-Sprachdateien und konvertiert sie in Assembly. ". – Thronghar

+3

Versuchen Sie, die Pakete neu zu installieren: 'libgcc1' und' gcc-core'. Könnte das lösen. – Thronghar

1

Am wahrscheinlichsten fehlt/usr/bin in der PATH-Variablen. Durch Hinzufügen von 'export PATH =/usr/bin: $ PATH' zu Ihrer .bashrc-Datei wird das Problem behoben.

0

Ich kam auch dieser Fehler auf Windows-Maschine während der Ausführung .exe Datei generiert von scilab2C ich.e-Toolbox für Scilab

Für Windows 32 bit die Umgebungsvariable Pfad wie folgt hinzufügen:

C:\cygwin\usr\i686-pc-cygwin\bin 

Hoffnung so wird dies Ihr Problem lösen.

0

Hinzufügen einiger Hintergrundinformationen. Ich hatte das gleiche Problem, wenn ich mein eigenes Programm aufbaute und es gegen graphviz cgraph.dll verband. Es stellt sich heraus, dass dies damit zusammenhängt, wo Windows nach DLLs sucht (siehe hier: https://msdn.microsoft.com/en-us/library/7d83bc18.aspx). Daher sollte das Hinzufügen des Pfades Ihrer fehlenden Bibliothek zu PATH das Problem beheben.

Es ist bedauerlich, dass die Nachricht nicht den Namen der Bibliothek enthält. Glücklicherweise gibt cmd.exe Ihnen diesen Namen (so ist es doch für etwas gut;)

Verwandte Themen