ファイルのオープン、書き込み、クローズのためのシステム コールを学習しようとしています。このサンプルを使用した結果は次のとおりです。
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++ コンパイラ、 の場合は Pascal コンパイラ、 の場合はアセンブラなどです。.cc
.C
.p
.s
プログラムに C++ プログラムであることを示す名前を付けたようです。Linux ファイル名は大文字と小文字が区別されることに注意してください。C ソース ファイルには、拡張子.c
(小文字c
)がなければなりません.C
。 ではありません。Unix ユーザーはファイル名に小文字をほとんど使用する傾向があり、特に従来のファイル拡張子はほとんどすべて小文字です。したがって、必ず小文字のファイル名を使用してください。