Where are the 64-bit binaries, for example for amd64?

In Linux packages, you get information about the amd64 architecture in the package name. OpenCSW packages say that they are i386, and the there are only a i386 and a sparc catalog:

Index of /opencsw/unstable/

Name            Last Modified       Size    Type
Parent Directory/                       -   Directory
i386/           2011-Jul-14 13:15:53    -   Directory
sparc/          2011-Jul-14 13:16:02    -   Directory

i386 looks like an awfully old architecture to be compiling binaries for. Since then, there were pentium_pro, i686 and a whole range of newer processors.

Are there any amd64 packages? If so, where are they?

asked: 2012-02-12 by: automaciej


Dagobert answers:

Where applicable the packages contain multiple files for 32 and 64 bit ISA and also probably more optimized ISAs. Libraries are almost always in 32 and 64 bit whereas binaries in 64 are added only when useful. The important thing to note about 64 bit is that it does not always perform better than 32 bit. The main reason for this is that 8 bytes need to be moved instead of 4 on memory operations, but when your application only requires 32 bit it takes a bit longer. To further complicate things some applications use different data-formats for their diskfiles between 32 and 64 bit versions making it impossible to simply switch back-and-forth. There are of course cases where 64 bit is better or even makes things possible. These cases are:

If both 32 and bit binaries are included then there are different ways in how either 32 or 64 bit is selected:

You can find out with pkgparam <pkg> OPENCSW_MODE64 which model is used by the respective package:

> pkgparam CSWautomake OPENCSW_MODE64            
32
> pkgparam CSWopenldap OPENCSW_MODE64
32/64
> pkgparam CSWlame OPENCSW_MODE64
32/64/isaexec

Dagobert answers:

Where applicable the packages contain multiple files for 32 and 64 bit ISA and also probably more optimized ISAs. Libraries are almost always in 32 and 64 bit whereas binaries in 64 are added only when useful. The important thing to note about 64 bit is that it does not always perform better than 32 bit. The main reason for this is that 8 bytes need to be moved instead of 4 on memory operations, but when your application only requires 32 bit it takes a bit longer. To further complicate things some applications use different data-formats for their diskfiles between 32 and 64 bit versions making it impossible to simply switch back-and-forth. There are of course cases where 64 bit is better or even makes things possible. These cases are:

If both 32 and bit binaries are included then there are different ways in how either 32 or 64 bit is selected:

You can find out with pkgparam <pkg> OPENCSW_MODE64 which model is used by the respective package:

> pkgparam CSWautomake OPENCSW_MODE64            
32
> pkgparam CSWopenldap OPENCSW_MODE64
32/64
> pkgparam CSWlame OPENCSW_MODE64
32/64/isaexec