
David Judson wrote:
At 08:01 AM 5/3/2004, you wrote:
David Judson <djudson@houston.westerngeco.slb.com> writes:
In a number of places in the filesystem library on Linux, the ::stat file system call is used. When this call is executed on a file whose size is larger than 2GB, it fails because the file size cannot fit into the default "stat" structure. This problem happens even when the size information in the stat structure is not used. For example the stat information is used in the directory iterator to look for sub directories.
This can be corrected by setting the macro _FILE_OFFSET_BITS to 64. What is the best way to set this macro on Linux?
You can add it to your BUILD variable with
bjam ... "-sBUILD=<define>_FILE_OFFSET_BITS ..." ...
Or you can put <define>_FILE_OFFSET_BITS in your project requirements or default-BUILD.
Thanks - that works for me
I have looked at the jam rules and cannot locate the appropriate place to include the definition. Also, what process should be followed if I want to have this macro defined either by default or at least as an option in the boost source tree so that I don't have to modify the build rules each time I install boost?
I don't understand what you have in mind.
I'm thought that it was likely that other users would run up against this same problem. I am suggesting that large file support should be enabled by default when building boost on Linux.
-- Dave Abrahams Boost Consulting http://www.boost-consulting.com
This caught my eye since I have code that depends on Large File Support (LFS). Though, for reasons alluded to below, I get LFS via C stdio instead of C++ streams. For the record, the LFS standard is here: http://ftp.sas.com/standards/large.file/ I wonder if there would be complications if LFS were enabled in Boost by default? For instance, how would it work with the GNU standard C++ library? My dated understanding is that some (all?) versions of GNU C++ streams do not support LFS. -- Vince Virgilio