c++: Problem beim Kompilieren

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
zahlhans
Beiträge: 56
Registriert: 06.02.2009 13:09:08

c++: Problem beim Kompilieren

Beitrag von zahlhans » 27.02.2009 20:43:24

Hi,

ich wollte seit längerem mal wieder ein c++ Programm schreiben. Leider ging die Kompilierung komplett in die Hose. Daher habe ich zum Test mal folgendes gemacht:

Code: Alles auswählen

#include <iostream>

using namespace std;

int main(void)
{
	cout << "Hallo";
	return 0;
}
Selbst das liefert beim Kompilieren mit g++ massig Fehlermeldungen:

Code: Alles auswählen

.....
ction 'std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::unget()':
/home/usr/bin/../lib/gcc/../../include/c++/4.3/bits/istream.tcc:703: error: '_M_gcount' was not declared in this scope
/home/usr/bin/../lib/gcc/../../include/c++/4.3/bits/istream.tcc: In function 'std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, _CharT2*)':
/home/usr/bin/../lib/gcc/../../include/c++/4.3/bits/istream.tcc:898: error: 'streamsize' was not declared in this scope
/home/usr/bin/../lib/gcc/../../include/c++/4.3/bits/istream.tcc:898: error: expected `;' before '__extracted'
/home/usr/bin/../lib/gcc/../../include/c++/4.3/bits/istream.tcc:906: error: expected `;' before '__num'
/home/usr/bin/../lib/gcc/../../include/c++/4.3/bits/istream.tcc:907: error: '__num' was not declared in this scope
/home/usr/bin/../lib/gcc/../../include/c++/4.3/bits/istream.tcc:908: error: 'streamsize' cannot appear in a constant-expression
/home/usr/bin/../lib/gcc/../../include/c++/4.3/bits/istream.tcc:908: error: template argument 1 is invalid
/home/usr/bin/../lib/gcc/../../include/c++/4.3/bits/istream.tcc:916: error: '__extracted' was not declared in this scope
/home/usr/bin/../lib/gcc/../../include/c++/4.3/bits/istream.tcc:916: error: '__num' was not declared in this scope
/home/usr/bin/../lib/gcc/../../include/c++/4.3/bits/istream.tcc:941: error: '__extracted' was not declared in this scope
Problem das #include <iostream>.
Kann mir jemand sagen, wie ich das in den Griff bekomme?

Benutzeravatar
armin
Beiträge: 2682
Registriert: 17.03.2005 11:49:14

Re: c++: Problem beim Kompilieren

Beitrag von armin » 27.02.2009 21:16:04

Wie kompilierst du das Ganze denn?
Ich sehe keinene Fehler. Zur Sicherheit habe ich es auch gerade nochmal probiert und konnte keine Probleme feststellen.
Zuletzt geändert von armin am 27.02.2009 22:10:58, insgesamt 1-mal geändert.
Formerly known as Trigger.
HP 8510p - Debian Sid
Mitglied des Debian-KDE-Teams

Benutzeravatar
catdog2
Beiträge: 5352
Registriert: 24.06.2006 16:50:03
Lizenz eigener Beiträge: MIT Lizenz

Re: c++: Problem beim Kompilieren

Beitrag von catdog2 » 27.02.2009 21:19:42

Hatte auch keine probleme damit.
Unix is user-friendly; it's just picky about who its friends are.

Danielx
Beiträge: 6419
Registriert: 14.08.2003 17:52:23

Re: c++: Problem beim Kompilieren

Beitrag von Danielx » 27.02.2009 21:20:34

catdog2 hat geschrieben:Hatte auch keine probleme damit.
+1

zahlhans
Beiträge: 56
Registriert: 06.02.2009 13:09:08

Re: c++: Problem beim Kompilieren

Beitrag von zahlhans » 27.02.2009 21:25:02

Ich kompiliere das mit "g++ dateiname.cpp", was mir ja eine "a.out" liefern sollte...

(Wenn die die iostream nicht includiere und entsprechend das cout weglasse kann das Programm zwar nicht viel, wird aber kompiliert)

Benutzeravatar
GoKi
Beiträge: 2068
Registriert: 04.07.2003 23:08:56
Lizenz eigener Beiträge: MIT Lizenz

Re: c++: Problem beim Kompilieren

Beitrag von GoKi » 27.02.2009 21:32:52

Code: Alles auswählen

/home/usr/bin/../lib/gcc/../../include/c++/4.3/bits/istream.tcc
Der Pfad sieht auch irgendwie komisch aus, hast du evtl ein weiteres g++ im Pfad?
MfG GoKi
:wq

Danielx
Beiträge: 6419
Registriert: 14.08.2003 17:52:23

Re: c++: Problem beim Kompilieren

Beitrag von Danielx » 27.02.2009 21:33:04

Kannst du mir sagen, was es mit /home/usr/bin/ auf sich hat?

zahlhans
Beiträge: 56
Registriert: 06.02.2009 13:09:08

Re: c++: Problem beim Kompilieren

Beitrag von zahlhans » 27.02.2009 22:03:01

Ich hatte vor langer Zeit mal Speicherplatzprobleme, weil ich mich in der Größe der Partionen beim Einrichten verschätzt hatte. Damals hatte ich nach irgendeinem Tutorial einiges verschoben.

Nebenbei: Software aus Quelltexten kann ich problemlos kompilieren...

Benutzeravatar
crane
Beiträge: 145
Registriert: 03.01.2006 15:43:18
Wohnort: Marburg
Kontaktdaten:

Re: c++: Problem beim Kompilieren

Beitrag von crane » 28.02.2009 02:45:56

Das Problem habe ich aktuell unter lenny auch.
Hab g++ mittels aptitude installiert.

Kann mir nicht erklären, wo der Fehler liegen könnte.

Benutzeravatar
habakug
Moderator
Beiträge: 4314
Registriert: 23.10.2004 13:08:41
Lizenz eigener Beiträge: MIT Lizenz

Re: c++: Problem beim Kompilieren

Beitrag von habakug » 28.02.2009 03:09:35

Hallo!

Besser wäre es wohl so:

Code: Alles auswählen

#include <iostream>
using namespace std;
int main()
{
   cout << "Hallo" << endl;
   return 0;
}
Benutzt du g++ Version 4,3, ruft >das< eine Menge Fehler hervor:

Code: Alles auswählen

#include <iostream.h>
using namespace std;
int main()
{
   cout << "Hallo" << endl;
   return 0;
}
Etwa so:

Code: Alles auswählen

lenny64:~# g++ -o hello debf.cpp 
debf.cpp:1:22: error: iostream.h: Datei oder Verzeichnis nicht gefunden
debf.cpp: In function ‘int main()’:
debf.cpp:7: error: ‘cout’ was not declared in this scope
debf.cpp:7: error: ‘endl’ was not declared in this scope
Schau doch mal nach:

Code: Alles auswählen

ls -lisa `which g++`
Gruß, habakug
( # = root | $ = user | !! = mod ) (Vor der PN) (Debianforum-Wiki) (NoPaste)

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Re: c++: Problem beim Kompilieren

Beitrag von Duff » 28.02.2009 09:19:14

Das Problem habe ich auch und kann ich so auch nachstellen.

Du musst anstelle von iostream.h iostream schreiben. Dann sollte es funktionieren.

Hier noch der Beweis:

Code: Alles auswählen

daniel@daniel-laptop:/tmp$ g++ -Wall -o test test.cpp
test.cpp:1:22: error: iostream.h: Datei oder Verzeichnis nicht gefunden
test.cpp: In function ‘int main()’:
test.cpp:4: error: ‘cout’ was not declared in this scope
test.cpp:4: error: ‘endl’ was not declared in this scope
daniel@daniel-laptop:/tmp$ vi test.cpp
daniel@daniel-laptop:/tmp$ g++ -Wall -o test test.cpp
daniel@daniel-laptop:/tmp$ cd /tmp/
daniel@daniel-laptop:/tmp$ ./test 
Hallo
daniel@daniel-laptop:/tmp$ cat test.cpp 
#include <iostream>
using namespace std;
int main() {
   cout << "Hallo" << endl;
   return 0;
}
Oh, yeah!

Milbret
Beiträge: 827
Registriert: 26.05.2008 12:04:54
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Nörten-Hardenberg
Kontaktdaten:

Re: c++: Problem beim Kompilieren

Beitrag von Milbret » 28.02.2009 09:52:11

Das Problem ist nicht sein Quelltext.
Es ist eher ein Problem mit den includes von g++ oder direkt von g++.
Den sein Code ist sauber und die Fehlermeldungen verweisen auch nicht auf seine Quelltext datei sondern auf die iostream.tcc die sich im include Ordner von g++ befinden.

Ich würde mal vorschlagen ein dpkg-reconfigure g++ zu machen.
Ob es dann geht ist eine andere Sache :(
Ansonsten kann es auch sein, dass die mit deinen Partitionen oder nur bei deiner $PATH was drin hast was nicht reingehört.

Martin
Es gibt keine if Schleife -> http://www.if-schleife.de/
Ansonsten GPL/GNU/Linux/Debian/Free Software 4 Ever :D

Spasswolf
Beiträge: 3472
Registriert: 30.11.2005 10:32:22
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Wald

Re: c++: Problem beim Kompilieren

Beitrag von Spasswolf » 28.02.2009 10:41:19

Ist /usr/bin bei dir ein Symlink auf /home/usr/bin? Bring das erstmal in Ordnung (z.B.: durch bind mount), dieses Problem wurde auch durch einen Symlink verursacht:
http://www.debianforum.de/forum/viewtop ... 0&start=30

zahlhans
Beiträge: 56
Registriert: 06.02.2009 13:09:08

Re: c++: Problem beim Kompilieren

Beitrag von zahlhans » 28.02.2009 10:56:44

Ja genau. Bei mir ist das ganze /usr ein symlink nach /home/usr.

Das wäre dann also das folgende:

Code: Alles auswählen

unlink /usr
mkdir /usr
mount --bind /home/usr /usr
Kann ich das im laufenden Betrieb machen oder muß ich von CD oder so booten? Und wie bekomme ich den symlink wieder hin, falls es schiefgeht? Das Notebook nutze ich nämlich für meine Arbeiten - wäre unschön, falls das nicht mehr funktioniert.

Benutzeravatar
habakug
Moderator
Beiträge: 4314
Registriert: 23.10.2004 13:08:41
Lizenz eigener Beiträge: MIT Lizenz

Re: c++: Problem beim Kompilieren

Beitrag von habakug » 28.02.2009 11:08:01

Hallo!

Es ist nicht Version 4.3 mit der da gearbeitet wird. Das liest sich so:
gcc.gnu.org hat geschrieben:For future reference, available headers are listed here.
An example.
#include <iostream.h>
int main()
{
cout << "I'm too old" << endl;
return 0;
}

Compiling with previous compilers gives:
warning: #warning This file includes at least one deprecated or
antiquated header. Please consider using one of the 32 headers found
in section 17.4.1.2 of the C++ standard. Examples include substituting
the <X> header for the <X.h> header for C++ includes, or
<iostream> instead of the deprecated header
<iostream.h>. To disable this warning use -Wno-deprecated.

But now says:
error: iostream.h: No such file or directory
In function 'int main()':
6: error: 'cout' was not declared in this scope
6: error: 'endl' was not declared in this scope

Fixing this is easy, as demonstrated below.
#include <iostream>
using namespace std;
int main()
{
cout << "I work again" << endl;
return 0;
}
Gruß, habakug

http://gcc.gnu.org/gcc-4.3/porting_to.html
( # = root | $ = user | !! = mod ) (Vor der PN) (Debianforum-Wiki) (NoPaste)

Danielx
Beiträge: 6419
Registriert: 14.08.2003 17:52:23

Re: c++: Problem beim Kompilieren

Beitrag von Danielx » 28.02.2009 15:27:55

@habakug:
Er verwendet doch aber iostream und nicht das bei gcc-4.3 nicht mehr erlaubte iostream.h :!:

Und oben im Link steht ja include/c++/4.3.

@zahlhans:
Kannst du dennoch mal die Ausgabe des folgenden Befehls posten:

Code: Alles auswählen

g++ -dumpversion
Gruß,
Daniel

zahlhans
Beiträge: 56
Registriert: 06.02.2009 13:09:08

Re: c++: Problem beim Kompilieren

Beitrag von zahlhans » 28.02.2009 17:04:15

Sorry, hatte vergessen die Ausgabe zu posten:

Code: Alles auswählen

$ g++ -dumpversion
4.3.2

Danielx
Beiträge: 6419
Registriert: 14.08.2003 17:52:23

Re: c++: Problem beim Kompilieren

Beitrag von Danielx » 28.02.2009 18:03:05

Wahrscheinlich hat das Verschieben des Verzeichnisses etwas mit dem Problem zu tun.

Gruß,
Daniel

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Re: c++: Problem beim Kompilieren

Beitrag von Duff » 28.02.2009 19:09:36

Habe bei mir unter lenny die gleiche Version von g++ und auch das gleiche "Problem".
Wobei ich es nicht als Problem ansehe, sondern es so löse wie es auch Habakug gepostet hat.
Oh, yeah!

Danielx
Beiträge: 6419
Registriert: 14.08.2003 17:52:23

Re: c++: Problem beim Kompilieren

Beitrag von Danielx » 28.02.2009 19:27:18

@Duff:
Duff hat geschrieben:Habe bei mir unter lenny die gleiche Version von g++ und auch das gleiche "Problem".
Es geht nicht um die veränderte Version (also mit iostream.h) von hapakug, sondern um die Version von zahlhans!

Bist du dir 100%-ig sicher, dass du unter Lenny mit g++ Version 4.3 dieses Programm von zahlhans nicht kompilieren kannst:

Code: Alles auswählen

#include <iostream>

using namespace std;

int main(void)
{
   cout << "Hallo";
   return 0;
}
:?:

Gruß,
Daniel

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Re: c++: Problem beim Kompilieren

Beitrag von Duff » 01.03.2009 12:04:02

Doch, mit #include <iostream> funktioniert es. Mit #include <iostream.h> nicht.

Dann habe ich wohl den Thread falsch verstanden.
Oh, yeah!

Danielx
Beiträge: 6419
Registriert: 14.08.2003 17:52:23

Re: c++: Problem beim Kompilieren

Beitrag von Danielx » 01.03.2009 14:15:43

Duff hat geschrieben:Dann habe ich wohl den Thread falsch verstanden.
Na, dann bin ich aber beruhigt!
Ich habe nämlich das Programm von zahlhans auf 5 Lenny-Systemen mit g++ kompiliert, sowohl auf Systemen, die von Etch auf Lenny aktualisiert wurden und Lenny-Neuinstallationen und konnte das Problem auf keinem System reproduzieren.

Gruß,
Daniel

Antworten