Estou tentando aprender chamadas de sistema para abrir, escrever e fechar um arquivo. Eu uso este exemplo e o resultado é:
gcc: error trying to exec 'cc1plus': execvp: No such file or directory
Aqui está o meu 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;
}
Responder1
Presumo que você esteja usando Ubuntu, Debian ou alguns derivados. Certifique-se de que seu sistema esteja atualizado e instale o g++.
Responder2
cc1plus
é um componente de um compilador C++. Você está tentando compilar um programa C. O gcc
comando determina qual compilador invocar com base no nome do arquivo de origem: um compilador C para .c
, um compilador C++ para .cc
ou .C
, um compilador Pascal para .p
, um assembler para .s
, etc.
Parece que você deu ao seu programa um nome que indica um programa C++. Observe que os nomes dos arquivos do Linux diferenciam maiúsculas de minúsculas. Os arquivos de origem C devem ter a extensão .c
(minúsculas c
), não .C
. Os usuários do Unix tendem a usar principalmente letras minúsculas nos nomes de arquivos e, em particular, quase todas as extensões de arquivo convencionais estão em letras minúsculas. Portanto, certifique-se de usar nomes de arquivos em letras minúsculas.