aboutsummaryrefslogtreecommitdiff
path: root/README
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--README43
-rw-r--r--README.COMPILATION.PROBLEMS130
2 files changed, 165 insertions, 8 deletions
diff --git a/README b/README
index ee70649..22945a2 100644
--- a/README
+++ b/README
@@ -1,9 +1,9 @@
1 1
2This is the README for bzip2, a block-sorting file compressor, version 2This is the README for bzip2, a block-sorting file compressor, version
30.9.5d. This version is fully compatible with the previous public 31.0. This version is fully compatible with the previous public
4releases, bzip2-0.1pl2 and bzip2-0.9.0. 4releases, bzip2-0.1pl2, bzip2-0.9.0 and bzip2-0.9.5.
5 5
6bzip2-0.9.5 is distributed under a BSD-style license. For details, 6bzip2-1.0 is distributed under a BSD-style license. For details,
7see the file LICENSE. 7see the file LICENSE.
8 8
9Complete documentation is available in Postscript form (manual.ps) or 9Complete documentation is available in Postscript form (manual.ps) or
@@ -30,15 +30,37 @@ The -n instructs make to show the commands it would execute, but
30not actually execute them. 30not actually execute them.
31 31
32 32
33HOW TO BUILD -- UNIX, shared library libbz2.so.
34
35Do 'make -f Makefile-libbz2_so'. This Makefile seems to work for
36Linux-ELF (RedHat 5.2 on an x86 box), with gcc. I make no claims
37that it works for any other platform, though I suspect it probably
38will work for most platforms employing both ELF and gcc.
39
40bzip2-shared, a client of the shared library, is also build, but
41not self-tested. So I suggest you also build using the normal
42Makefile, since that conducts a self-test.
43
44Important note for people upgrading .so's from 0.9.0/0.9.5 to
45version 1.0. All the functions in the library have been renamed,
46from (eg) bzCompress to BZ2_bzCompress, to avoid namespace pollution.
47Unfortunately this means that the libbz2.so created by
48Makefile-libbz2_so will not work with any program which used an
49older version of the library. Sorry. I do encourage library
50clients to make the effort to upgrade to use version 1.0, since
51it is both faster and more robust than previous versions.
52
53
33HOW TO BUILD -- Windows 95, NT, DOS, Mac, etc. 54HOW TO BUILD -- Windows 95, NT, DOS, Mac, etc.
34 55
35It's difficult for me to support compilation on all these platforms. 56It's difficult for me to support compilation on all these platforms.
36My approach is to collect binaries for these platforms, and put them 57My approach is to collect binaries for these platforms, and put them
37on my web page (http://www.muraroa.demon.co.uk). Look there. However 58on the master web page (http://sourceware.cygnus.com/bzip2). Look
38(FWIW), bzip2-0.9.5 is very standard ANSI C and should compile 59there. However (FWIW), bzip2-1.0 is very standard ANSI C and should
39unmodified with MS Visual C. For Win32, there is one important 60compile unmodified with MS Visual C. For Win32, there is one
40caveat: in bzip2.c, you must set BZ_UNIX to 0 and BZ_LCCWIN32 to 1 61important caveat: in bzip2.c, you must set BZ_UNIX to 0 and
41before building. 62BZ_LCCWIN32 to 1 before building. If you have difficulties building,
63you might want to read README.COMPILATION.PROBLEMS.
42 64
43 65
44VALIDATION 66VALIDATION
@@ -116,6 +138,10 @@ WHAT'S NEW IN 0.9.5 ?
116 * Many small improvements in file and flag handling. 138 * Many small improvements in file and flag handling.
117 * A Y2K statement. 139 * A Y2K statement.
118 140
141WHAT'S NEW IN 1.0
142
143 See the CHANGES file.
144
119I hope you find bzip2 useful. Feel free to contact me at 145I hope you find bzip2 useful. Feel free to contact me at
120 jseward@acm.org 146 jseward@acm.org
121if you have any suggestions or queries. Many people mailed me with 147if you have any suggestions or queries. Many people mailed me with
@@ -137,3 +163,4 @@ Cambridge, UK
13723 August 1998 (bzip2, version 0.9.0) 16323 August 1998 (bzip2, version 0.9.0)
138 8 June 1999 (bzip2, version 0.9.5) 164 8 June 1999 (bzip2, version 0.9.5)
139 4 Sept 1999 (bzip2, version 0.9.5d) 165 4 Sept 1999 (bzip2, version 0.9.5d)
166 5 May 2000 (bzip2, version 1.0pre8)
diff --git a/README.COMPILATION.PROBLEMS b/README.COMPILATION.PROBLEMS
new file mode 100644
index 0000000..d621ad5
--- /dev/null
+++ b/README.COMPILATION.PROBLEMS
@@ -0,0 +1,130 @@
1
2bzip2-1.0 should compile without problems on the vast majority of
3platforms. Using the supplied Makefile, I've built and tested it
4myself for x86-linux, sparc-solaris, alpha-linux, x86-cygwin32 and
5alpha-tru64unix. With makefile.msc, Visual C++ 6.0 and nmake, you can
6build a native Win32 version too. Large file support seems to work
7correctly on at least alpha-tru64unix and x86-cygwin32 (on Windows
82000).
9
10When I say "large file" I mean a file of size 2,147,483,648 (2^31)
11bytes or above. Many older OSs can't handle files above this size,
12but many newer ones can. Large files are pretty huge -- most files
13you'll encounter are not Large Files.
14
15Earlier versions of bzip2 (0.1, 0.9.0, 0.9.5) compiled on a wide
16variety of platforms without difficulty, and I hope this version will
17continue in that tradition. However, in order to support large files,
18I've had to include the define -D_FILE_OFFSET_BITS=64 in the Makefile.
19This can cause problems.
20
21The technique of adding -D_FILE_OFFSET_BITS=64 to get large file
22support is, as far as I know, the Recommended Way to get correct large
23file support. For more details, see the Large File Support
24Specification, published by the Large File Summit, at
25 http://www.sas.com/standard/large.file/
26
27As a general comment, if you get compilation errors which you think
28are related to large file support, try removing the above define from
29the Makefile, ie, delete the line
30 BIGFILES=-D_FILE_OFFSET_BITS=64
31from the Makefile, and do 'make clean ; make'. This will give you a
32version of bzip2 without large file support, which, for most
33applications, is probably not a problem.
34
35Alternatively, try some of the platform-specific hints listed below.
36
37You can use the spewG.c program to generate huge files to test bzip2's
38large file support, if you are feeling paranoid. Be aware though that
39any compilation problems which affect bzip2 will also affect spewG.c,
40alas.
41
42
43Known problems as of 1.0pre8:
44~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
45
46* HP/UX 10.20 and 11.00, using gcc (2.7.2.3 and 2.95.2): A large
47 number of warnings appear, including the following:
48
49 /usr/include/sys/resource.h: In function `getrlimit':
50 /usr/include/sys/resource.h:168:
51 warning: implicit declaration of function `__getrlimit64'
52 /usr/include/sys/resource.h: In function `setrlimit':
53 /usr/include/sys/resource.h:170:
54 warning: implicit declaration of function `__setrlimit64'
55
56 This would appear to be a problem with large file support, header
57 files and gcc. gcc may or may not give up at this point. If it
58 fails, you might be able to improve matters by adding
59 -D__STDC_EXT__=1
60 to the BIGFILES variable in the Makefile (ie, change its definition
61 to
62 BIGFILES=-D_FILE_OFFSET_BITS=64 -D__STDC_EXT__=1
63
64 Even if gcc does produce a binary which appears to work (ie passes
65 its self-tests), you might want to test it to see if it works properly
66 on large files.
67
68
69* HP/UX 10.20 and 11.00, using HP's cc compiler.
70
71 No specific problems for this combination, except that you'll need to
72 specify the -Ae flag, and zap the gcc-specific stuff
73 -Wall -Winline -O2 -fomit-frame-pointer -fno-strength-reduce.
74 You should retain -D_FILE_OFFSET_BITS=64 in order to get large
75 file support -- which is reported to work ok for this HP/UX + cc
76 combination.
77
78
79* SunOS 4.1.X.
80
81 Amazingly, there are still people out there using this venerable old
82 banger. I shouldn't be too rude -- I started life on SunOS, and
83 it was a pretty darn good OS, way back then. Anyway:
84
85 SunOS doesn't seem to have strerror(), so you'll have to use
86 perror(), perhaps by doing adding this (warning: UNTESTED CODE):
87
88 char* strerror ( int errnum )
89 {
90 if (errnum < 0 || errnum >= sys_nerr)
91 return "Unknown error";
92 else
93 return sys_errlist[errnum];
94 }
95
96 Or you could comment out the relevant calls to strerror; they're
97 not mission-critical. Or you could upgrade to Solaris. Ha ha ha!
98 (what?? you think I've got Bad Attitude?)
99
100
101* Making a shared library on Solaris. (Not really a compilation
102 problem, but many people ask ...)
103
104 Firstly, if you have Solaris 8, either you have libbz2.so already
105 on your system, or you can install it from the Solaris CD.
106
107 Secondly, be aware that there are potential naming conflicts
108 between the .so file supplied with Solaris 8, and the .so file
109 which Makefile-libbz2_so will make. Makefile-libbz2_so creates
110 a .so which has the names which I intend to be "official" as
111 of version 1.0.0 and onwards. Unfortunately, the .so in
112 Solaris 8 appeared before I decided on the final names, so
113 the two libraries are incompatible. We have since communicated
114 and I hope that the problems will have been solved in the next
115 version of Solaris, whenever that might appear.
116
117 All that said: you might be able to get somewhere
118 by finding the line in Makefile-libbz2_so which says
119
120 $(CC) -shared -Wl,-soname -Wl,libbz2.so.1.0 -o libbz2.so.1.0.1 $(OBJS)
121
122 and replacing with
123
124 ($CC) -G -shared -o libbz2.so.1.0.1 -h libbz2.so.1.0 $(OBJS)
125
126 If gcc objects to the combination -fpic -fPIC, get rid of
127 the second one, leaving just "-fpic".
128
129
130That's the end of the currently known compilation problems.