gcc-Probleme "can't locate file for: -lcrt1.o"

B

B.Knispel

Neues Mitglied
Thread Starter
Dabei seit
23.05.2007
Beiträge
6
Reaktionspunkte
0
Hallo allerseits!

Ich möchte gerne ein ganz simples C-Programm mit dem gcc kompilieren. Ich habe dazu gerade die neueste Version von XCode (2.4.1) und den zugehörigen gcc 4.0 auf meinem G3-Powerbook, auf dem 10.4.9 als System läuft, installiert.

Beim Versuch zu kompilieren (z.B. mit)

gcc /Users/benni/untitled.cpp

bekomme ich grundsätzlich die Fehlermeldung:

/usr/bin/ld: can't locate file for: -lcrt1.o
collect2: ld returned 1 exit status

Wenn ich zusätzliche Optionen wie -o für gcc und die Spezifikation einer Ausgabedatei verwende, bleibt das Problem bestehen. Die Kompilierung ohne Verlinkung mit gcc -c funktioniert problemlos.

Ich bin leider in der Bedienung der Shell nicht so fit, so daß ich keine Ahnung habe, was ich nun tun könnte, um das zum Funzen zu bringen. Auf den früheren Systemen funkionierte die Kompilierung immer problemfrei... :confused:

Könnt ihr mir helfen?

Viele Grüße, Benjamin
 
Nimm statt gcc den Befehl g++. Da sind dann gleich die richtigen Voreinstellungen für C++ Dateien drin.

Alex
 
Stimmt, ich hatte es auch mit einer .cpp versucht - da hast Du mich erwischt...

Aber auch solche simplen Sachen wie "helloworld.c" – das ich vermutlich nicht zu posten brauche – lassen sich nicht kompilieren. Auch alte Sourcecodes, die ich vor Jahren auf demselben Rechner (mit einem anderen System und nem anderen gcc) kompiliert hatte, sind nicht mehr zu kompilieren.

Es kommt immer der genannte Fehler; sagt der jemanden etwas? Ich kann damit aufgrund meines fehlenden Systemstruktur-Wissens leider nichts anfangen.
 
mach mal im Terminal

file /usr/lib/crt1.o

Das erwartete Ergebnis ist:
/usr/lib/crt1.o: Mach-O universal binary with 4 architectures
/usr/lib/crt1.o (for architecture ppc): Mach-O object ppc
/usr/lib/crt1.o (for architecture i386): Mach-O object i386
/usr/lib/crt1.o (for architecture ppc64): Mach-O 64-bit object ppc64
/usr/lib/crt1.o (for architecture x86_64): Mach-O 64-bit object x86_64

Alex

EDIT:

Und poste doch mal ein ganz triviales Program, und genau, wie Du gcc aufrufst
 
mach mal im Terminal

file /usr/lib/crt1.o

Bei mir gibt es das Problem:

/usr/lib/crt1.o: cannot open (/usr/lib/crt1.o)

weil zumindest keine für mich sichtbare Datei crt1.o in /usr/lib/ auf meinem Rechner liegt. Das könnte das Problem dann auch erklären, nicht wahr? Nun stellt sich mir natürlich die Frage, wo ich die Datei herbekomme...

Und poste doch mal ein ganz triviales Program, und genau, wie Du gcc aufrufst

Das Programm, von dem ich weiß, daß ich es kompilieren konnte (weil ich noch die funktionierende a.out habe) ist folgendes:

/* Programm zur Berechnung der Haeufigkeit eines Ostertermines;
gibt Liste mit Tagen ab 22.03. und Haeufigkeit im Suchzeitraum aus. */

#include <stdio.h>

main()
{

int day,dayc,month,year,ayear,eyear,a,b,c,d,e,f,g,h,i,k,l,m,n,p,count;
FILE *ergebnis;
ergebnis=fopen("./erg.dat","w+"); // Stream fuer Ergebnisdaten

printf("Startjahr der Suche?\n");
scanf("%d",&ayear);
printf("Endjahr der Suche?\n");
scanf("%d",&eyear);

for(dayc=22;dayc<57;dayc++){ // Schleife fuer Tagedurchlauf

count=0;

day=dayc%32; // Aus Laufvar. dayc tatsaechlichen Tag errechnen
if(dayc>31)
{
day++;
month=4;
}
else month=3;

for(year=ayear;year<eyear;year++) //Osterber. fuer alle Jahre
{
a=year%19;
b=year/100;
c=year%100;
d=b/4;
e=b%4;
f=(b+8)/25;
g=(b-f+1)/3;
h=(19*a+b-d-g+15)%30;
i=c/4;
k=c%4;
l=(32+2*e+2*i-h-k)%7;
m=(a+11*h+22*l)/451;
n=(h+l-7*m+114)/31;
p=(h+l-7*m+114)%31;
if(n==month && p+1==day) count++;
}

fprintf(ergebnis,"%i %i\n",dayc-22,count); //Ausgabe

}
fclose(ergebnis);
}


Das ist zugegebenermaßen kein Helloworld, enthält aber auch nichts aufregendes, oder irre ich mich da?

EDIT: "gcc -o ./test.out ostern.c" wäre eine Möglichkeit, den Fehler zu provozieren, alle anderen Aufrufe z.B. ohne -o ./test.out produzieren ihn aber auch.
 
Bei mir gibt es das Problem:

/usr/lib/crt1.o: cannot open (/usr/lib/crt1.o)

weil zumindest keine für mich sichtbare Datei crt1.o in /usr/lib/ auf meinem Rechner liegt. Das könnte das Problem dann auch erklären, nicht wahr? Nun stellt sich mir natürlich die Frage, wo ich die Datei herbekomme...

Ja. Das erklärt das Problem :D

Wie hast Du gcc installiert? Mit den Xcode Tools? Dann muss diese Datei eignentlich da sein.
Sonst: Xcode Tools neu installieren

Alex
 
Ich hatte es mit den Xcode Tools installiert. Aber dann werde ich das eben noch mal wiederholen. Mache ich gleich und sage dann mal bescheid, ob's geht.
 
Hurra!

So, wie gesagt neu installiert.

Nun geht es, /usr/lib/crt1.o existiert und ich bin sehr glücklich!

Dir, Alex, vielen, vielen Dank für die nette und unglaublich schnelle Hilfe!

Jetzt weiß ich ja, wo ich nachfragen kann, wenn noch mal Probleme auftreten.
 
Zurück
Oben Unten