[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Notes on Linux Build for Large Queue



Daryl,

>       Hmmm, so I rebuilt with the options -D_FILE_OFFSET_BITS=64
> -D_LARGEFILE_SOURCE and I can build large files, just not from ldmadmin.
> If I specify "5000000000" in the ldmadmin script, the result is a 2^31
> size file.  I am still trying to sort through the source code to figure
> out why. 

I think just setting the compile flags -D_FILE_OFFSET_BITS=64 and
-D_LARGEFILE_SOURCE is not sufficient.  The compiler must also be set
to use the "LP64 model", where longs and pointers are 64 bits.  So
although the LDM programs may compile OK with these flags, that won't
make the executables real 64-bit programs.  In particular, the offsets
in the queue, which are defined to be longs, won't work if longs are
only 32 bits.

That's why the "-xarch=v9" flag is needed on Solaris and the "-64"
flag is needed on IRIX.

You could add the "-m64" flag to gcc, but I don't think Linux supports
the LP64 model unless it's running on a true 64-bit platform, such as
Itanium, Alpha, Sparc, or MIPS.  Since you're running on an i386
Athlon, there may not be any support in the architecture for the LP64
model, in which case trying to build 64-bit programs on it won't work.

Note that it wouldn't be enough to just compile in the LP64 model.
You would also have to link with versions of the standard libraries
compiled for the LP64 model as well.  So unless Linux comes with LP64
versions of the libraries such as libc, this won't work ...

--Russ