~ubuntu-branches/ubuntu/hardy/codeblocks/hardy-backports

« back to all changes in this revision

Viewing changes to src/plugins/contrib/devpak_plugin/bzip2/README.COMPILATION.PROBLEMS

  • Committer: Bazaar Package Importer
  • Author(s): Michael Casadevall
  • Date: 2008-07-17 04:39:23 UTC
  • Revision ID: james.westby@ubuntu.com-20080717043923-gmsy5cwkdjswghkm
Tags: upstream-8.02
ImportĀ upstreamĀ versionĀ 8.02

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
bzip2-1.0 should compile without problems on the vast majority of
 
3
platforms.  Using the supplied Makefile, I've built and tested it
 
4
myself for x86-linux, sparc-solaris, alpha-linux, x86-cygwin32 and
 
5
alpha-tru64unix.  With makefile.msc, Visual C++ 6.0 and nmake, you can
 
6
build a native Win32 version too.  Large file support seems to work
 
7
correctly on at least alpha-tru64unix and x86-cygwin32 (on Windows
 
8
2000).
 
9
 
 
10
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,
 
12
but many newer ones can.  Large files are pretty huge -- most files
 
13
you'll encounter are not Large Files.
 
14
 
 
15
Earlier versions of bzip2 (0.1, 0.9.0, 0.9.5) compiled on a wide
 
16
variety of platforms without difficulty, and I hope this version will
 
17
continue in that tradition.  However, in order to support large files,
 
18
I've had to include the define -D_FILE_OFFSET_BITS=64 in the Makefile.
 
19
This can cause problems.
 
20
 
 
21
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
 
23
file support.  For more details, see the Large File Support
 
24
Specification, published by the Large File Summit, at
 
25
   http://www.sas.com/standard/large.file/
 
26
 
 
27
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
 
29
the Makefile, ie, delete the line
 
30
   BIGFILES=-D_FILE_OFFSET_BITS=64 
 
31
from the Makefile, and do 'make clean ; make'.  This will give you a
 
32
version of bzip2 without large file support, which, for most
 
33
applications, is probably not a problem.  
 
34
 
 
35
Alternatively, try some of the platform-specific hints listed below.
 
36
 
 
37
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
 
39
any compilation problems which affect bzip2 will also affect spewG.c,
 
40
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.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
 
 
130
That's the end of the currently known compilation problems.