Я пытаюсь изучить системные вызовы для открытия, записи и закрытия файла. Я использую этот пример и результат:
gcc: error trying to exec 'cc1plus': execvp: No such file or directory
Вот моя программа:
#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;
}
решение1
Я предполагаю, что вы используете Ubuntu, Debian или некоторые производные. Убедитесь, что ваша система обновлена, а затем установите g++.
решение2
cc1plus
является компонентом компилятора C++. Вы пытаетесь скомпилировать программу на языке C. Команда gcc
определяет, какой компилятор вызвать, на основе имени исходного файла: компилятор C для .c
, компилятор C++ для .cc
или .C
, компилятор Pascal для .p
, ассемблер для .s
и т. д.
Похоже, вы дали своей программе имя, которое указывает на программу C++. Обратите внимание, что имена файлов Linux чувствительны к регистру. Исходные файлы C должны иметь расширение .c
(в нижнем регистре c
), а не .C
. Пользователи Unix склонны использовать в именах файлов в основном строчные буквы, и в частности почти все обычные расширения файлов имеют строчные буквы. Поэтому обязательно используйте строчные буквы в именах файлов.