我正在尝试从一个非常大的二进制文件中读取数据并使用内存映射对其进行处理,因此可以逐字节读取它。我在执行此操作时遇到了一些编译器错误,我无法弄清楚是什么原因造成的。为了记录,我在 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
我做错了什么,我能做些什么来解决它?