我想從一個非常大的二進制文件讀取數據並使用內存映射進行處理,因此可以逐字節讀取它。這樣做時我收到了一些編譯器錯誤,我無法弄清楚是什麼導致了它們。我正在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'? – 2012-04-15 05:31:14
我已經擁有了它們。忘記在問題中提及它們 – AndroidDev93 2012-04-15 05:35:10
失敗的代碼與上面的完全相同。我使用makefile來編譯我的程序。我在上面的問題框 – AndroidDev93 2012-04-15 05:45:01