Re: Adding large file support
Re: Adding large file support
- Subject: Re: Adding large file support
- From: Terry Lambert <email@hidden>
- Date: Sun, 24 Oct 2010 19:00:54 -0700
off_t is 64 bit by default in Mac OS X, so it's not necessary to use special calls to obtain large file support. You will still need to use fseeko() instead of fseek(), unless you compile your code 64 bit (fseek() takes a long instead of an off_t because the standard requires it).
I'm actually surprised off_t isn't 64 bit for Linux as well; it is for all of the BSDs.
-- Terry
On Oct 23, 2010, at 3:28 AM, Alex Reynolds wrote:
> I have a C application I am trying to compile under Mac OS X 10.6.4, which includes large file support. The application builds correctly under Linux.
>
> Here is the Darwin kernel I am using:
>
> -------------------------
> $ uname -v
> Darwin Kernel Version 10.4.0: Fri Apr 23 18:28:53 PDT 2010; root:xnu-1504.7.4~1/RELEASE_I386
> -------------------------
>
> My gcc installation is as follows:
>
> -------------------------
> $ gcc --version
> i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5664)
> -------------------------
>
> My Makefile is as follows:
>
> -------------------------
> CC=gcc
> CFLAGS=-D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -O3 -Wformat -Wall -pedantic -std=gnu99
>
> all: myApp
> rm -rf *~
>
> myApp: myApp.o
> ${CC} ${CFLAGS} myApp.o -lbz2 -o myApp
> rm -rf *~
>
> clean:
> rm -rf *.o myApp
> -------------------------
>
> The issue is that my application makes calls to "fseeko64" and "fopen64", and it uses the "off64_t" type for offsets. When I attempt to build, I get the following related warnings and errors:
>
> -------------------------
> $ make myApp
> gcc -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -O3 -Wformat -Wall -pedantic -std=gnu99 -c -o myApp.o myApp.c
> myApp.c: In function ‘extractData’:
> myApp.c:119: warning: implicit declaration of function ‘fseeko64’
> myApp.c:119: error: ‘off64_t’ undeclared (first use in this function)
> myApp.c:119: error: (Each undeclared identifier is reported only once
> myApp.c:119: error: for each function it appears in.)
> myApp.c: In function ‘extractMetadata’:
> myApp.c:305: warning: implicit declaration of function ‘fopen64’
> myApp.c:305: warning: assignment makes pointer from integer without a cast
> -------------------------
>
> My code builds without errors under Linux. What changes can I make to the source code to add large file support when building under Darwin?
>
> Thanks for your advice.
>
> Regards,
> Alex _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Darwin-dev mailing list (email@hidden)
> Help/Unsubscribe/Update your Subscription:
>
> This email sent to email@hidden
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Darwin-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden