• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[Solved]Problem bei GCC-Compiler Installation

sc4r3crow

Newbie
HI, erster Beitrag hier im Forum^^

Kann mir jemand bezüglich der Installation des GCC Compilers helfen, da der make befehl immer Error ergibt.

Zuerst erstell ich den Ordner wo ich GCC installieren will:
Code:
mkdir /opt/gcc
cd /opt/gcc

Dann führe ich den configure-Befehl aus:
Code:
/path/to/configure --prefix=/opt/gcc

Wenn ich nun:
Code:
make
ausführe bekomme ich folgenden Output am Ende:
Code:
WARNING: `makeinfo' is missing on your system.  You should only need it if
         you modified a `.texi' or `.texinfo' file, or any other file
         indirectly affecting the aspect of the manual.  The spurious
         call might also be the consequence of using a buggy `make' (AIX,
         DU, IRIX).  You might want to install the `Texinfo' package or
         the `GNU make' package.  Grab either from any GNU archive site.
make[3]: *** [fastjar.info] Error 1
make[3]: Leaving directory `/opt/gcc/fastjar'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/opt/gcc/fastjar'
make[1]: *** [all-fastjar] Error 2
make[1]: Leaving directory `/opt/gcc'
make: *** [all] Error 2

Kann mir jemand sagen was dies bedeutet? Ich hab das neueste GNU Make installiert... bin noch Linux-Newbie

Thx schon mal, scarecrow
 
Wie wär's mit einer heißen Tasse mit vorkompilierten RPMs? SUSE Linux 10.1 kommt mit GCC4, reicht das nicht?
 
OP
S

sc4r3crow

Newbie
Du hast natürlich Recht, das hab ich auch installiert bloß wie soll man Erfahrung sammeln wenn man nichts macht? ;) Ich wollte das eben einmal selber compilieren und da dann diese Fehler entstanden sind wollte ich die Gründe dafür wissen. Danke für die Antwort.
 
OP
S

sc4r3crow

Newbie
So, endlich hat das kompilieren geklappt und auch die beiden Befehle make und make install funktionieren ohne Fehlermeldungen.

Allerdings zeigt er mir bei
Code:
gcc -v

Immer noch:
Code:
Thread model: posix
gcc version 4.1.0 (SUSE Linux)
an?!
 
OP
S

sc4r3crow

Newbie
Du meinst ich muss in der $PATH Variable den Pfad für den gcc Compiler hinzufügen?
Kannst du mir erklären wie ich dies machen muss?

Und dann hab ich gleich noch eine Frage die nicht direkt mit dem Comipler zu tun hat sondern ich hab folgendes Programm:
Code:
#include <iostream>
#include <stdio.h>

using namespace std;

void swap_refs(int&, int&);

void swap_normal(int, int);


int main(int argc, char* argv[])
{
	int a;
	int b;
	
	printf("Please type the values to swap: ");
	scanf("%d", a);
	printf("and: ");
	scanf("%d", b);
	
	printf("You entered: %i for a and %i for b\n", a, b);
	
	printf("--- Swaping without refs ---");
	swap_normal(a, b);
	printf("Result of normal swap: a = %i, b = %i\n", a, b);
	
	printf("--- Swapping with refs ---");
	swap_refs(a, b);
	printf("Result of ref-swap: a = %i, b = %i\n", a, b);
	
	printf("Program finished - exiting");
	
	scanf("%*");	
	return 0;
}

void swap_normal(int a, int b)
{
	int temp = a;
	a = b;
	b = temp;
}

void swap_refs(int& a, int& b)
{
	int temp = a;
	a = b;
	b = temp;
}

Wenn ich nun das Programm compilier und über ./referenzen (=Programmname) ausführe, 4 eingebe und Enter drücke bekomme ich:
Code:
Please type the values to swap: 4
Speicherzugriffsfehler

Wo ist der Fehler und warum passiert nichts wenn ich auf die Datei Referenzen in meinem Dateibrowser doppelklicke?
 
Code:
#include <stdio.h>
Das sollte <cstdio> heißen.
Code:
using namespace std;
Für dein gegenwärtigen Code nicht notwendig.
Code:
void swap_refs(int&, int&);
static davor.
Code:
	printf("Please type the values to swap: ");
	scanf("%d", a);
	printf("and: ");
	scanf("%d", b);
	
	printf("You entered: %i for a and %i for b\n", a, b);
Wieso einmal %d und %i? --> Aus %i wird %d.
Code:
	scanf("%*");
Und was wird das?

Kompilier gefälligst mit anständigen Flags :-D (-Wall -Wno-pointer-arith -Wredundant-decls) dann passiert auch kein Segfault, bzw. dann wird dir schon gesagt wo's dran scheitert.
 
sc4r3crow schrieb:
warum passiert nichts wenn ich auf die Datei Referenzen in meinem Dateibrowser doppelklicke?
Weil Du Linux verwendest und Dein Programm ein Konsolenprogramm ist. Konsolenprogramme werden nicht durch Doppelklicken im Dateibrowser ausgeführt!

Im Übrigen passiert sehr wohl etwas, Dein Programm wird wirklich ausgeführt, aber Du siehst es nicht, weil der Dateibrowser Konsolenprogramme nicht als solche erkennen und deshalb auch keine Konsole für Dich starten kann. Gewöhne Dich daran, dass Du Linux verwendest, und erwarte nicht, dass da alles genauso ist wie bei dem anderen System, das Du vorher verwendet hast.
 
OP
S

sc4r3crow

Newbie
Vielen Dank für die Antworten funktioniert einwandfrei, lag daran dass bei scanf ein Zeiger übergeben werden muss^^

Das scanf("%*") sollte eig bewirken dass erst eine Taste gedrückt werden muss, hab ich mal online gelesen, hat aber nicht funktioniert^^

Danke, Problem somit gelöst!
 
Oben