xref: /freebsd/contrib/bzip2/README.COMPILATION.PROBLEMS (revision 51f61fc0c7ece7a30c737341e65455841bc3f04e)
11b79bae0SXin LI------------------------------------------------------------------
21b79bae0SXin LIThis file is part of bzip2/libbzip2, a program and library for
31b79bae0SXin LIlossless, block-sorting data compression.
4df9de0ebSDavid E. O'Brien
5*51f61fc0SXin LIbzip2/libbzip2 version 1.0.8 of 13 July 2019
6*51f61fc0SXin LICopyright (C) 1996-2019 Julian Seward <jseward@acm.org>
71b79bae0SXin LI
81b79bae0SXin LIPlease read the WARNING, DISCLAIMER and PATENTS sections in the
91b79bae0SXin LIREADME file.
101b79bae0SXin LI
111b79bae0SXin LIThis program is released under the terms of the license contained
121b79bae0SXin LIin the file LICENSE.
131b79bae0SXin LI------------------------------------------------------------------
141b79bae0SXin LI
15b88cc53dSXin LIbzip2 should compile without problems on the vast majority of
16df9de0ebSDavid E. O'Brienplatforms.  Using the supplied Makefile, I've built and tested it
171b79bae0SXin LImyself for x86-linux and amd64-linux.  With makefile.msc, Visual C++
18f7a4f99fSDavid E. O'Brien6.0 and nmake, you can build a native Win32 version too.  Large file
191b79bae0SXin LIsupport seems to work correctly on at least on amd64-linux.
20df9de0ebSDavid E. O'Brien
21df9de0ebSDavid E. O'BrienWhen I say "large file" I mean a file of size 2,147,483,648 (2^31)
22df9de0ebSDavid E. O'Brienbytes or above.  Many older OSs can't handle files above this size,
23df9de0ebSDavid E. O'Brienbut many newer ones can.  Large files are pretty huge -- most files
24df9de0ebSDavid E. O'Brienyou'll encounter are not Large Files.
25df9de0ebSDavid E. O'Brien
261b79bae0SXin LIEarly versions of bzip2 (0.1, 0.9.0, 0.9.5) compiled on a wide variety
271b79bae0SXin LIof platforms without difficulty, and I hope this version will continue
281b79bae0SXin LIin that tradition.  However, in order to support large files, I've had
291b79bae0SXin LIto include the define -D_FILE_OFFSET_BITS=64 in the Makefile.  This
301b79bae0SXin LIcan cause problems.
31df9de0ebSDavid E. O'Brien
32df9de0ebSDavid E. O'BrienThe technique of adding -D_FILE_OFFSET_BITS=64 to get large file
33df9de0ebSDavid E. O'Briensupport is, as far as I know, the Recommended Way to get correct large
34df9de0ebSDavid E. O'Brienfile support.  For more details, see the Large File Support
35df9de0ebSDavid E. O'BrienSpecification, published by the Large File Summit, at
361b79bae0SXin LI
37f7a4f99fSDavid E. O'Brien   http://ftp.sas.com/standards/large.file
38df9de0ebSDavid E. O'Brien
39df9de0ebSDavid E. O'BrienAs a general comment, if you get compilation errors which you think
40df9de0ebSDavid E. O'Brienare related to large file support, try removing the above define from
41df9de0ebSDavid E. O'Brienthe Makefile, ie, delete the line
421b79bae0SXin LI
43df9de0ebSDavid E. O'Brien   BIGFILES=-D_FILE_OFFSET_BITS=64
441b79bae0SXin LI
45df9de0ebSDavid E. O'Brienfrom the Makefile, and do 'make clean ; make'.  This will give you a
46df9de0ebSDavid E. O'Brienversion of bzip2 without large file support, which, for most
47df9de0ebSDavid E. O'Brienapplications, is probably not a problem.
48df9de0ebSDavid E. O'Brien
49df9de0ebSDavid E. O'BrienAlternatively, try some of the platform-specific hints listed below.
50df9de0ebSDavid E. O'Brien
51df9de0ebSDavid E. O'BrienYou can use the spewG.c program to generate huge files to test bzip2's
52df9de0ebSDavid E. O'Brienlarge file support, if you are feeling paranoid.  Be aware though that
53df9de0ebSDavid E. O'Brienany compilation problems which affect bzip2 will also affect spewG.c,
54df9de0ebSDavid E. O'Brienalas.
551b79bae0SXin LI
561b79bae0SXin LIAIX: I have reports that for large file support, you need to specify
571b79bae0SXin LI-D_LARGE_FILES rather than -D_FILE_OFFSET_BITS=64.  I have not tested
581b79bae0SXin LIthis myself.
59