[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: unzip



"JH" == Josh  <jholland3@uswest.net> writes:

Josh,

   JH> OK, so now I downloaded the Linux version of the program I
   JH> need (a Dynamic DNS program) and unzipped it (not an .exe).
   JH> When I run it I get this:

   JH> Cannot execute binary file.

   JH> What's the deal?

Aha, now I see. 

It's quite simple, really.  Many companies claim that their
software is available for ``Linux'', but they're lying.  What they
should have said is that their application is available for x86
Linux.  If you had a PC running some flavor of Linux, you'd be
fine, but if you want to run it on a PowerMac running the same
flavor of Linux, you're out of luck.

There are lots of differences between the x86 and PowerPC
processor families. A program compiled for one processor family
will not make sense to a processor in another family, any more
than French will make sense to someone who only speaks Cantonese.

For example, if I run ``file /bin/cat'' on my system, I get

   /bin/cat: ELF 32-bit MSB executable, PowerPC or cisco 4500,
   version 1, dynamically linked (uses shared libs), stripped

On our dual-Pentium system, ``file /bin/cat'' gives me

   /bin/cat: ELF 32-bit LSB executable, Intel 80386, version 1,
   dynamically linked (uses shared libs), stripped

and if I try to run the i386 executable by copying it to my
PowerPC machine, I get

    cat: Exec format error. Binary file not executable.

The source code for /bin/cat is the same, but the binary
executable produced by compiling that source is
architecture-specific.

You might think that given source code, you could compile a
program on your PowerPC machine and have it work, but sometimes
that's not true, either.  Some programmers make assumptions about
the behavior of the machine that only apply to one or two
architectures, and fail on others.  The most famous of these for
PowerPC is the assumption that the C language `char' type is
signed, which is true on Intel and SPARC processors, but not true
on PowerPC and Alpha processors -- the ISO C standard defines
char's signedness as ``unspecified'', leaving it open to
interpretation by the machine's designers.  Because many
programmers try to ``optimize'' their code by defining a variable
to be a char rather than an int when the variable is expected to
hold small values, the code can fail on PowerPC systems, with the
compiler giving warnings such as ``comparison is always false
because of limited range of data type''.  (Perhaps the saddest
thing of all is that these ``optimizations'' are often deeply
flawed and don't make the program run any faster -- they can even
make the program run slower!)

Your best bet is to find a program that does what you want and is
packaged for Debian PowerPC.

   CMC


+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
 Behind the counter a boy with a shaven head stared vacantly into space, 
 a dozen spikes of microsoft protruding from the socket behind his ear.
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
   C.M. Connelly               c@eskimo.com                   SHC, DS
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ 



Reply to: