Software > Programmieren, Kompilieren

Sunstudio-Compiler spuckt merkwürdige Fehler aus

(1/2) > >>

töfte:
Ich möchte gerade auf eigene Faust auf Solaris 9/x86 Fluxbox zusammenzimmern und stoße auf foglende Probleme:


--- Code: ---
        CC -DHAVE_CONFIG_H -I. -I../..     -g  -I/usr/openwin/include -DSHAPE  -I/usr/openwin/include   -c -o Font.o Font.cc
"XFontImp.hh", line 85: Warning: FbTk::XFontImp::rotate hides the virtual function FbTk::FontImp::rotate(int).
"/usr/local/SUNWspro/prod/include/CC/Cstd/rw/tree", line 96: Error: The name std is ambiguous as a result of an unnamed namespace.
"/usr/local/SUNWspro/prod/include/CC/Cstd/./map", line 112:     Where: While specializing "__rwstd::__rb_tree<std::string, std::pair<const std::string, std::string>, __rwstd::__select1st<std::pair<const std::string, std::string>, std::string>, std::less<std::string>, std::allocator<std::pair<const std::string, std::string>>>".
"/usr/local/SUNWspro/prod/include/CC/Cstd/./map", line 112:     Where: Specialized in std::map<std::string,std::string>.
"Font.cc", line 87:     Where: Specialized in non-template code.


--- Ende Code ---

Als $CC habe ich /opt/SUNWspro/bin/cc verlinkt, ein triviales C-Programm kann er auch einwandfrei (mit berechtigten Warnungen ) übersetzen.
Irgendein C++ oder Solaris-Guru hier, der mir auf die Sprünge helfen könnte ?

Ten Little Indyans:
Welche Version des Compilers hast Du? Und welche Version von Fluxbox versuchst Du zu übersetzen? Ich kenne Fluxbox noch gar nicht, werde mir aber jezt mal die Quellen zu 1.0rc3 runterladen.

Die Fehlermeldungen deuten erstmal darauf hin das da einiges an Schweinkram mit C++-Templates gemacht wird.

Bei meiner (ziemlich kurzen) Suche im Netz habe ich keinerlei Anzeichen dafür gefunden das Fluxbox jemals mit etwas anderem als dem gcc übersetzt worden ist. Es gibt demnach zwei mögliche Ursachen für Dein Problem:

1. Der Fluxbox C++-Code ist standardkonform aber SunStudio nicht (zumindest für ein bestimmtes Merkmal was Dir jetzt Probleme macht).

2. Der Fluxbox-Code ist nicht standardkonform, sondern auf kompilierfähigkeit durch den gcc hin "optimiert".

C++ ist leider eine Sprache die alles andere als portabel ist. Soweit ich weiss gibt es bis heute noch keinen Compiler der vollständig den ISO-Standard abdeckt. >:(

Die Warnung bezüglich der rotate-Methode deutet für mich eher auf Ursache 2 - sie ist wahrscheinlich ungefährlich aber zeugt von Schlamperei... ::)

Andrew.

töfte:
Hi,
ich habe heute frisch die Sunstudio12 Suite installiert.
Die Fluxboxversion die ich kompilieren will ist auch heute runtergeladen worden, das dürfte also dieselbe Version sein.
In C++ bin ich leider nicht so bewandert, aber ich glaube uch eher daß da ein "Optimierungsproblem" vorliegt.
Ansonsten kann ich mal versuchen auf c99 zu linken und dann ein Compile zu wagen, es kost' ja nischt  ;)

escimo:
Aus dem "Sun Studio 12: C++ User's Guide"

--- Zitat ---1.2 Standards Conformance
The C++ compiler (CC) supports the ISO International Standard for C++, ISO IS 14882:1998, Programming Language—C++. The readme file that accompanies the current release describes any departures from requirements in the standard.
--- Ende Zitat ---


--- Zitat von: Ten Little Indyans am 18. August 2007, 19:23:20 ---C++ ist leider eine Sprache die alles andere als portabel ist. Soweit ich weiss gibt es bis heute noch keinen Compiler der vollständig den ISO-Standard abdeckt. >:(
--- Ende Zitat ---
C++ Quellcode ist portabel. Wenn man sich allerdings nicht an Vorgaben des ISO-Standards hält, muss man halt "Code-Nachbesserungen" durchführen.

Könnte jemand den Inhalt der readme-Datei bitte als Code-Block posten? Ich komme an das Studio 12 nur "spärlich" ran mit meiner lahmen Internetverbindung.  :-\

Gruß
escimo

PS: Könnt ja mal das Kompilat von mir testen.  ;D

Ten Little Indyans:

--- Zitat von: escimo am 19. August 2007, 13:32:36 ---Aus dem "Sun Studio 12: C++ User's Guide"

--- Zitat ---1.2 Standards Conformance
The C++ compiler (CC) supports the ISO International Standard for C++, ISO IS 14882:1998, Programming Language—C++. The readme file that accompanies the current release describes any departures from requirements in the standard.
--- Ende Zitat ---


--- Zitat von: Ten Little Indyans am 18. August 2007, 19:23:20 ---C++ ist leider eine Sprache die alles andere als portabel ist. Soweit ich weiss gibt es bis heute noch keinen Compiler der vollständig den ISO-Standard abdeckt. >:(
--- Ende Zitat ---
C++ Quellcode ist portabel. Wenn man sich allerdings nicht an Vorgaben des ISO-Standards hält, muss man halt "Code-Nachbesserungen" durchführen.

Könnte jemand den Inhalt der readme-Datei bitte als Code-Block posten? Ich komme an das Studio 12 nur "spärlich" ran mit meiner lahmen Internetverbindung.  :-\

--- Ende Zitat ---

Habe gerade festgestellt das ich selbst nur Sun Studio 11 installiert habe. ::)
Ich nehme an diese readme-Datei ist gemeint? (Zum Posten etwas viel, sollte man sich aber auch bei lahmer Verbindung anschauen können.)

Das Problem ist ja nicht sich als Entwickler an den Standard zu halten, sondern das wirklich jeder Compiler irgendein Feature des Standards nicht unterstützt(*). Wenn Du nun in deinem Code genau das eine Feature verwendest welches Compiler X nicht unterstützt dann wirst Du Probleme haben Deine Anwendung auf Platformen zu portieren die gerade diesen Compiler verwenden.

(*) Zum Glück sind es heutzutage - 9 Jahre nach Verabschiedung des Standards - größtenteils nur noch die eher obskuren Features die nicht richtig laufen.

Laut o.g. Readme unterstützt Sun Studio 12 z.B. noch keine Universal Character Names und auch keine Exported Templates. Wer die benutzen will muss sich also einen anderen Compiler suchen...

Andrew.

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln