Ich versuche, Systemaufrufe zum Öffnen, Schreiben und Schließen einer Datei zu lernen. Ich verwende dieses Beispiel und das Ergebnis ist:
gcc: error trying to exec 'cc1plus': execvp: No such file or directory
Hier ist mein Programm:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
int main (int argc, char *argv[])
{
int fd1;
char buf[128];
fd1 = open("Desktop/this.txt", O_WRONLY);
if (fd1 == -1) {
perror("File cannot be opened");
return EXIT_FAILURE;
}
/* Enter the data to be written into the file */
scanf("%127s", buf);
write(fd1, buf, strlen(buf)); /* fd1 is the file descriptor, buf is the character array used to
hold the data, strlen(buf) informs the function that the number of bytes equal to the length of the
string in the buffer need to be copied */
close(fdl);
return 0;
}
Antwort1
Ich gehe davon aus, dass Sie Ubuntu, Debian oder einige Derivate davon verwenden. Stellen Sie sicher, dass Ihr System auf dem neuesten Stand ist, und installieren Sie dann g++.
Antwort2
cc1plus
ist eine Komponente eines C++-Compilers. Sie versuchen, ein C-Programm zu kompilieren. Der gcc
Befehl bestimmt anhand des Namens der Quelldatei, welcher Compiler aufgerufen werden soll: ein C-Compiler für .c
, ein C++-Compiler für .cc
oder .C
, ein Pascal-Compiler für .p
, ein Assembler für .s
usw.
Es scheint, dass Sie Ihrem Programm einen Namen gegeben haben, der auf ein C++-Programm hinweist. Beachten Sie, dass Linux-Dateinamen zwischen Groß- und Kleinschreibung unterscheiden. C-Quelldateien müssen die Erweiterung .c
(klein geschrieben c
) haben, nicht .C
. Unix-Benutzer neigen dazu, in Dateinamen überwiegend Kleinbuchstaben zu verwenden, und insbesondere sind fast alle herkömmlichen Dateierweiterungen klein geschrieben. Achten Sie also darauf, Dateinamen in Kleinbuchstaben zu verwenden.