This archive contains answers to questions sent to Unidata support through mid-2025. Note that the archive is no longer being updated. We provide the archive for reference; many of the answers presented here remain technically correct, even if somewhat outdated. For the most up-to-date information on the use of NSF Unidata software and data services, please consult the Software Documentation first.
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