diff options
author | Julian Seward <jseward@acm.org> | 2005-02-15 22:13:13 +0100 |
---|---|---|
committer | Julian Seward <jseward@acm.org> | 2005-02-15 22:13:13 +0100 |
commit | 4d540bfc95a4b0eefc1d1f388ec33534aaeb3a2f (patch) | |
tree | 3b7e9c650b4c61d114e1716c4698e40d5c8d7ef7 /README.COMPILATION.PROBLEMS | |
parent | 099d844292f60f9d58914da29e5773204dc55e7a (diff) | |
download | bzip2-1.0.3.tar.gz bzip2-1.0.3.tar.bz2 bzip2-1.0.3.zip |
bzip2-1.0.3bzip2-1.0.3
Diffstat (limited to 'README.COMPILATION.PROBLEMS')
-rw-r--r-- | README.COMPILATION.PROBLEMS | 103 |
1 files changed, 6 insertions, 97 deletions
diff --git a/README.COMPILATION.PROBLEMS b/README.COMPILATION.PROBLEMS index bd1822d..f1bc396 100644 --- a/README.COMPILATION.PROBLEMS +++ b/README.COMPILATION.PROBLEMS | |||
@@ -1,11 +1,10 @@ | |||
1 | 1 | ||
2 | bzip2-1.0 should compile without problems on the vast majority of | 2 | bzip2-1.0.3 should compile without problems on the vast majority of |
3 | platforms. Using the supplied Makefile, I've built and tested it | 3 | platforms. Using the supplied Makefile, I've built and tested it |
4 | myself for x86-linux, sparc-solaris, alpha-linux, x86-cygwin32 and | 4 | myself for x86-linux and x86_64-linux. With makefile.msc, Visual C++ |
5 | alpha-tru64unix. With makefile.msc, Visual C++ 6.0 and nmake, you can | 5 | 6.0 and nmake, you can build a native Win32 version too. Large file |
6 | build a native Win32 version too. Large file support seems to work | 6 | support seems to work correctly on at least alpha-tru64unix and |
7 | correctly on at least alpha-tru64unix and x86-cygwin32 (on Windows | 7 | x86-cygwin32 (on Windows 2000). |
8 | 2000). | ||
9 | 8 | ||
10 | When I say "large file" I mean a file of size 2,147,483,648 (2^31) | 9 | When I say "large file" I mean a file of size 2,147,483,648 (2^31) |
11 | bytes or above. Many older OSs can't handle files above this size, | 10 | bytes or above. Many older OSs can't handle files above this size, |
@@ -22,7 +21,7 @@ The technique of adding -D_FILE_OFFSET_BITS=64 to get large file | |||
22 | support is, as far as I know, the Recommended Way to get correct large | 21 | support is, as far as I know, the Recommended Way to get correct large |
23 | file support. For more details, see the Large File Support | 22 | file support. For more details, see the Large File Support |
24 | Specification, published by the Large File Summit, at | 23 | Specification, published by the Large File Summit, at |
25 | http://www.sas.com/standard/large.file/ | 24 | http://ftp.sas.com/standards/large.file |
26 | 25 | ||
27 | As a general comment, if you get compilation errors which you think | 26 | As a general comment, if you get compilation errors which you think |
28 | are related to large file support, try removing the above define from | 27 | are related to large file support, try removing the above define from |
@@ -38,93 +37,3 @@ You can use the spewG.c program to generate huge files to test bzip2's | |||
38 | large file support, if you are feeling paranoid. Be aware though that | 37 | large file support, if you are feeling paranoid. Be aware though that |
39 | any compilation problems which affect bzip2 will also affect spewG.c, | 38 | any compilation problems which affect bzip2 will also affect spewG.c, |
40 | alas. | 39 | alas. |
41 | |||
42 | |||
43 | Known 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.2 $(OBJS) | ||
121 | |||
122 | and replacing with | ||
123 | |||
124 | $(CC) -G -shared -o libbz2.so.1.0.2 -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 | |||
130 | That's the end of the currently known compilation problems. | ||