Ich versuche, einen C-Code mit diesem Befehl zu kompilierengcc -Wall -m32 -std=gnu99 -o <filename> <filename>
Anstatt eine Ausgabedatei zu erhalten, erhalte ich Folgendes.
/usr/bin/ld: cannot find Scrt1.o: No such file or directory
/usr/bin/ld: cannot find crti.o: No such file or directory
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/7/libgcc.a when searching for -lgcc
/usr/bin/ld: cannot find -lgcc
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/7/libgcc_s.so.1 when searching for libgcc_s.so.1
/usr/bin/ld: cannot find libgcc_s.so.1
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/7/libgcc.a when searching for -lgcc
/usr/bin/ld: cannot find -lgcc
collect2: error: ld returned 1 exit status
Das Kompilieren mit -std=c11
funktioniert einwandfrei, aber nicht mit - std=gnu99
.
Antwort1
Im Wesentlichen bedeutet dies, dass Ihr System keine 32-Bit-Unterstützung hat, sondern nur 64-Bit.
Mit main.c
/* extern void start(); */
int main()
{
/* start(); */
}
Und
gcc -m32 main.c -o main
Ich habe ein Ubuntu 18.04, auf dem nur gcc installiert ist:
> ~/PROJECT2/ciforthcvs$ gcc -m32 main.c -o main /usr/bin/ld: cannot
> find Scrt1.o: No such file or directory /usr/bin/ld: cannot find
> crti.o: No such file or directory /usr/bin/ld: skipping incompatible
> /usr/lib/gcc/x86_64-linux-gnu/7/libgcc.a when searching for -lgcc
> /usr/bin/ld: cannot find -lgcc /usr/bin/ld: skipping incompatible
> /usr/lib/gcc/x86_64-linux-gnu/7/libgcc.a when searching for -lgcc
> /usr/bin/ld: cannot find -lgcc collect2: error: ld returned 1 exit
> status
nach
su
# apt install multi-lib
Alles lief reibungslos und ich konnte mein Nichtstun-Programm ausführen.
Antwort2
versuchen:
find / -iname='*Scrit1.o*' 2>/dev/null
find / -iname='*criti.o*' 2>/dev/null
Ändern Sie Ihren gcc-Befehl so, dass er
gcc -Wall -m32 -std=gnu99 -o <filename> <filename> /some-path/Scrit1.o /some-other-path/criti.o