非常に大きなバイナリファイルからデータを読み取り、メモリマッピングを使用して処理しようとしているので、バイトごとに読み取ることができます。これを実行しているときにいくつかのコンパイラエラーが発生しますが、それらの原因を特定できません。記録のために、私はLinuxプラットフォームでこれを行っています。
#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
私は何を間違っているのですか、そしてそれを修正するために何ができますか?