On 2004-01-02, Matthew Wilcox wrote:
> I would say that audacity should be compiled with LFS support too.
> Suppose on x86 it attempts to deal with a file sized more than 2GB?
The binaries are correct on x86 because the sources are using the opaque
type off_t.
I think now I know what the problem is:
On x86 is
int == long < long long
but on ia64 is
int < long == long long .
Unfortunately for C++ is long != long long even on ia64 because of
static type checking. The compiler that compiled the binaries in the
Debian archive translated off_t into long long but the compiler on my
ia64 machine compiles off_t into long. Linking is no longer possible.
$ cat x.cc
#include <sys/types.h>
void x(off_t) {}
void y(long) {}
void z(long long) {}
$ nm x.o | c++filt
0000000000000000 T x(long)
0000000000000020 T y(long)
0000000000000040 T z(long long)
$ nm x.o
0000000000000000 T _Z1xl
0000000000000020 T _Z1yl
0000000000000040 T _Z1zx
All three functions have an int argument with 64 bit size but only the
first 2 functions have the same C++ linkage.
Maybe it is not the compiler but the C library that causes that error.
Torsten