非常に大きなバイナリファイルからデータを読み込み、メモリマッピングを使用して処理しようとしているので、バイトごとに読み取ることができます。これを実行中に私はいくつかのコンパイラエラーが発生しており、原因を突き止めることができません。私はレコードのために、Linuxプラットフォームでこれをやっています。次のようにバイナリを読み込むためにCでメモリマッピングを使用する
#include <unistd.h>
#include <sys/types.h>
#include <sys/mman.h>
#include<stdio.h>
#include<stdlib.h>
int fd;
char *data;
fd = open("data.bin", O_RDONLY);
pagesize = 4000;
data = mmap((caddr_t)0, pagesize, PROT_READ, MAP_SHARED, fd, pagesize);
私が得るエラーは以下のとおりです。
を初期化しない
CADDRはR_RDONLY
のmmapが少なすぎる引数を持つ初期化されていません。
私はこのようになりますされ、それをコンパイルするためのMakefileを使用しています:私は間違って
all: order_book
CC = gcc
CFLAGS = -std=c99
order_book: main.c
$(CC) $(CFLAGS) -o order_book main.c
clean:
rm -f order_book
何をやっている、と私はそれを修正するために何ができるのでしょうか?
あなたが別のヘッダーファイルをインクルードする必要があるように見えます。おそらく 'stdio.h'か' stdlib.h'でしょうか? –
私はすでにそれらを持っていた。 – AndroidDev93
失敗したコードは上記とまったく同じです。私は私のプログラムをコンパイルするためにmakefileを使います。私は上記の質問ボックスに内容を表示しました – AndroidDev93