Estoy intentando aprender las llamadas al sistema para abrir, escribir y cerrar un archivo. Utilizo esta muestra y el resultado es:
gcc: error trying to exec 'cc1plus': execvp: No such file or directory
Aquí está mi programa:
#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;
}
Respuesta1
Supongo que estás usando Ubuntu, Debian o algunos derivados. Asegúrese de que su sistema esté actualizado y luego instale g++.
Respuesta2
cc1plus
es un componente de un compilador de C++. Estás intentando compilar un programa en C. El gcc
comando determina qué compilador invocar según el nombre del archivo fuente: un compilador de C para .c
, un compilador de C++ para .cc
o .C
, un compilador de Pascal para .p
, un ensamblador para .s
, etc.
Parece que le diste a tu programa un nombre que indica un programa C++. Tenga en cuenta que los nombres de archivos de Linux distinguen entre mayúsculas y minúsculas. Los archivos fuente C deben tener la extensión .c
(minúscula c
), no .C
. Los usuarios de Unix tienden a utilizar principalmente letras minúsculas en los nombres de los archivos y, en particular, casi todas las extensiones de archivos convencionales están en minúsculas. Así que asegúrese de utilizar nombres de archivos en minúsculas.