1a kompilieren

automake / autoconf

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

1a kompilieren
hi,

nachdem ich jetzt cvs einigermassen rudimentaer verstanden habe
(hoffentlich!), will ich jetzt die testprogramme laufen lassen, weiss
aber nicht wie:

faui05h [aufgabe1a]> aclocal
faui05h [aufgabe1a]> autoconf
faui05h [aufgabe1a]> automake -ac
faui05h [aufgabe1a]> ./config
./config: Command not found.
faui05h [aufgabe1a]> ./configure 
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for C++ compiler default output... a.out
checking whether the C++ compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables... 
checking for suffix of object files... o
checking whether we are using the GNU C++ compiler... yes
checking whether /local/gcc-3.2.3/bin/g++ accepts -g... yes
checking for style of include used by make... GNU
checking dependency style of /local/gcc-3.2.3/bin/g++... gcc3
configure: creating ./config.status
config.status: creating Makefile
config.status: executing depfiles commands

und jetzt?
was machen die oben von mir eingegeben kommandos eigentlich?
ich habe das bloss von der environment.pdf abgetippt :[…

danke fuer jede hilfe.


wenn ich “make” mache,
bekomme ich eine fuer mich unverstaendliche fehlermeldung
vom gcc:

faui05h [aufgabe1a]> make
if /local/gcc-3.2.3/bin/g++ -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE=\"aufgabe1a\" -DVERSION=\"1.0\"  -I. -I.     -g -O2 -MT radtour.o -MD -MP -MF ".deps/radtour.Tpo" \
  -c -o radtour.o `test -f 'radtour.cpp' || echo './'`radtour.cpp; \
then mv -f ".deps/radtour.Tpo" ".deps/radtour.Po"; \
else rm -f ".deps/radtour.Tpo"; exit 1; \
fi
In file included from radtour.cpp:1:
fahrrad.hpp:3: syntax error before `{' token
fahrrad.hpp:11: syntax error before `}' token
radtour.cpp: In function `int main(int, char**)':
radtour.cpp:4: aggregate `Fahrrad f' has incomplete type and cannot be defined
make: *** [radtour.o] Error 1

hier ein ausschnitt aus meiner fahrrad.hpp:

// Hier Klasse Fahrrad definieren

class Fahrrad : public Zweirad {
        private:
                bool isUsed;
        public:
...
                bool absteigen ();
};

was stimmt da nicht?


Kann es sein, dass du in der .hpp, die du in der radtour.cpp vor der fahrrad.hpp includet hast, einen Syntaxfehler hast? Der Compiler klebt die Headerfiles ja zum compilieren zusammen und wenn jetzt in der Klasse davor das finale Semikolon fehlt, dann meldet er den Fehler bei der Definition der nächsten Klasse.


danke fuer die antwort,
aber ich hab da nur die “fahrrad.hpp” includet.
aber vielleicht ist das ja gerade das problem?!


Mir kommt da gerade so, wo hast du eigentlich die Zweirad.hpp includet? Die Fahrrad ist ja davon abgeleitet?


wenn du eine Vererbung von der Klasse Zweirad haben möchtest, dann solltest du die entsprechende Datei (zweirad.hpp) auch inkludieren :slight_smile: … sonst ist Zweirad ein für den Compiler unbekanntes Wort g

@Autoconf:
Das ganze Zeugs dient dazu automatisch entsprechende Makefiles zu erzeugen. Alles bis ./configure dient dazu das configure-skript zu erstellen. Dieses wiederum sorgt dafür, dass ein Makefile erzeugt werden kann. Idealerweise führt man letzteres erst auf dem Zielsystem aus, damit das configure-skript das Programm an die lokalen Gegebenheiten anpassen kann.

z.B. brauchen manche Programme für bestimmte Funktionen bestimmte Bibliotheken. Configure stellt dann fest was auf dem System installiert ist und sorgt so dafür, dass das Programm z.B. für eine graphische Oberfläche oder nur für die Konsole oder mit mp3 oder oggvorbis oder weiß der Geier was kompiliert wird :slight_smile:OHNE, dass man sich als Entwickler oder Benutzer groß um irgendwelche Einstellungen bemühen muss :slight_smile:


Und auch tunlichst kein

#define Zweirad

irgendwo stehen haben :wink: