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 '')
| -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. | ||
