C++ clang linker-problem
Möchte ich die Analyse von debug-Informationen, die der C++ - code .
So wie ich das verstehe clang sollte in der Lage sein, um mit C++.
Versuchte ich clang myFile.cpp
Aber ich bekomme
clang: error: unable to execute command: Programm nicht ausführbar
clang error: linker command failed due to signal 1 (- v, um zu sehen, invocation).
Update:
Nach der Einstellung Pfad für llvm-ld es teilweise funktioniert.Ich meine, wenn ich ausführen
clang C:myFile.cpp -S -emit-llvm -o -
es gibt einige Infos .Aber es immer noch nicht für clang myFile.cpp
mit Fehler
clang version 2.9 (tags/RELEASE_29/final)
Target: i686-pc-win32
Thread model: posix
"C:/FrontEnd/llvm/bin/Debug/clang.exe" -cc1 -triple i686-pc-win32 -emit-obj -mrelax-all -disable-free -main-file-name BinarySearch_Kernels.cpp -mrelocation-model static -mdisable-fp-elim -masm-verbose -mconstructor-aliases -momit-leaf-frame-pointer -v -resource-dir C:/FrontEnd/l
lvm/bin/Debug..\lib\clang\2.9 -ferror-limit 19 -fmessage-length 280 -fcxx-exceptions -fexceptions -fms-extensions -fmsc-version=1300 -fgnu-runtime -fdiagnostics-show-option -fcolor-diagnostics -o C:/Users/ilipov/AppData/Local/Temp/cc-563130.o -x c++ C:\clang\BinarySearch_Kernels
.cpp
clang -cc1 version 2.9 based upon llvm 2.9 hosted on i686-pc-win32
ignoring nonexistent directory "/usr/local/include"
ignoring nonexistent directory "/usr/include"
#include "..." search starts here:
#include <...> search starts here:
C:/FrontEnd/llvm/bin/Debug/../lib/clang/2.9/include
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include
End of search list.
"link.exe" -out:a.out -defaultlib:libcmt -nologo C:/Users/ilipov/AppData/Local/Temp/cc-563130.o
clang: error: unable to execute command: program not executable
clang: error: linker command failed due to signal 1 (use -v to see invocation)
Jeden Fall, was ich will zu tun ist, um als full debug info wie möglich
Beispielsweise für
class stamBase
{
public:
int get1(){return 2;};
int get0(){return 0;}
};
class stamDer : public stamBase
{
public:
int get1(){return 1;}
};
void func()
{
stamDer d;
int x = d.get1();
}
Bekomme ich
target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f80:128:128-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32"
target triple = "i686-pc-win32"
%class.stamDer = type { i8 }
define void @_Z4funcv() {
entry:
%d = alloca %class.stamDer, align 1
%x = alloca i32, align 4
%call = call i32 @_ZN7stamDer4get1Ev(%class.stamDer* %d)
store i32 %call, i32* %x, align 4
ret void
}
define linkonce_odr i32 @_ZN7stamDer4get1Ev(%class.stamDer* %this) nounwind align 2 {
entry:
%this.addr = alloca %class.stamDer*, align 4
store %class.stamDer* %this, %class.stamDer** %this.addr, align 4
%this1 = load %class.stamDer** %this.addr
ret i32 1
}
Aus meiner Untersuchung von clang-debug-info-code, den ich dachte, ich sollte die info für stamBase auch!
Wie ich das Geräusch richtig für acceptig full debug info " und " Verhinderung von clang Fehler
InformationsquelleAutor Yakov | 2011-08-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich glaube, Sie brauchen, um zu installieren ein linker. GNU-ld wird in Ordnung sein; Sie sollten in der Lage sein, um es zu installieren Sie über Ihren Paketmanager.
Bearbeiten: Es gibt auch eine LLVM linker, weniger populäre, aber die laufen würde, out of the box mit clang einmal installiert (nur hinzufügen, um die
PATH
einen re-runclang
.)llvm-ld sollte es tun
entweder ld oder gold, beide funktionieren sollte. ld hat den Vorteil, dass standard-und cross-Plattform.
Angenommen ich installiert llvm-ld oder-GNU-ld-ld.wie sollte ich laufen, klappern jetzt mit meiner cpp-Datei?
Ich habe llvm-ld exe. Es wurde Hinzugefügt, um den Pfad.Aber ich bekomme immer noch den gleichen Fehler.
InformationsquelleAutor slaphappy