Both sides previous revisionPrevious revisionNext revision | Previous revisionLast revisionBoth sides next revision |
slackware:multilib [2016/08/12 22:21 (UTC)] – New glibc 2.24 and gcc 5.4.0 in slackware-current. alienbob | slackware:multilib [2019/12/04 20:50 (UTC)] – [The quick 'n' dirty instructions] Be more specific about releases. alienbob |
---|
* //glibc// (i.e. a glibc that supports //running// both 32bit and 64bit binaries), and | * //glibc// (i.e. a glibc that supports //running// both 32bit and 64bit binaries), and |
* //gcc// (i.e. able to //compile// 32bit binaries as well as 64bit binaries). | * //gcc// (i.e. able to //compile// 32bit binaries as well as 64bit binaries). |
- Then, system libraries are taken from 32bit Slackware and installed in the 64bit Slackware system which completes the process of creating a 32bit software layer. | - Then, system libraries are taken from 32bit Slackware and installed in the 64bit Slackware system alongside their 64bit versions which completes the process of creating a 32bit compatibility software layer. |
| |
<note>Slackware for the x86_64 architecture (or "//Slackware64//" for short) is a pure 64-bit Operating System, but easily upgradable to multilib. //Out of the box, Slackware64 is only capable of compiling and running 64bit binaries.//</note> | |
| |
When Slackware64 was released, it had an advantage over the 64bit "forks" that existed out there. These forks added the 32bit compatibility layer by recompiling a lot of their packages as 32bit binaries. Slackware on the other hand, is a distribution that consists of a 32bit and 64bit release, both of which are being developed in parallel. This means, that you do not have to compile 32-bit packages from scratch in order to add multilib capability to the 64bit system. You simply take them from the 32-bit Slackware package tree! \\ This was one of the reasons for not adding full multilib to Slackware64 - we create the right preconditions but require the user to act if she needs multilib. \\ In a [[#detailed_instructions | section further down]], I will explain how you can take a 32-bit Slackware package (say, the "mesa" package) and re-package its content into a "mesa-compat32" package that you can install straight away on Slackware64. | When Slackware64 was released, it had an advantage over the 64bit "forks" that existed out there. These forks added the 32bit compatibility layer by recompiling a lot of their packages as 32bit binaries. Slackware on the other hand, is a distribution that consists of a 32bit and 64bit release, both of which are being developed in parallel. This means, that you do not have to compile 32-bit packages from scratch in order to add multilib capability to the 64bit system. You simply take them from the 32-bit Slackware package tree! \\ This was one of the reasons for not adding full multilib to Slackware64 - we create the right preconditions but require the user to act if she needs multilib. \\ In a [[#detailed_instructions | section further down]], I will explain how you can take a 32-bit Slackware package (say, the "mesa" package) and re-package its content into a "mesa-compat32" package that you can install straight away on Slackware64. |
| |
| <note>Slackware for the x86_64 architecture (or "//Slackware64//" for short) is a pure 64-bit Operating System, but easily upgradable to multilib. //Out of the box, Slackware64 is only capable of compiling and running 64bit binaries.//</note> |
| |
| |
* Done! You can now start downloading, installing and running 32bit programs. This was not so hard, was it? | * Done! You can now start downloading, installing and running 32bit programs. This was not so hard, was it? |
| |
<note warning>If you use a package manager like //slackpkg// you will have to add all the ''glibc'' and ''gcc'' package names to its package blacklist. If you do not take this precaution, you run the risk of your package manager accidentally replacing your multilib versions with Slackware's original pure 64-bit versions!\\ If you run Slackware 13.37 or newer, then slackpkg supports regular expressions in the blacklist file. In that case, a single line in ''/etc/slackpkg/blacklist'' will be enough to blacklist all of my packages (including multilib gcc and glibc packages and all ''compat32'' packages): <code> | <note warning>If you use a package manager like //slackpkg// on Slackware releases older dan 13.37 you will have to add all the ''glibc'' and ''gcc'' package names to its package blacklist. If you do not take this precaution, you run the risk of your package manager accidentally replacing your multilib versions with Slackware's original pure 64-bit versions!\\ If you run Slackware 13.37 or newer, then slackpkg supports regular expressions in the blacklist file. In that case, a single line in ''/etc/slackpkg/blacklist'' will be enough to blacklist all of my packages (including multilib gcc and glibc packages and all ''compat32'' packages): <code> |
[0-9]+alien | [0-9]+alien |
[0-9]+compat32 | [0-9]+compat32 |
* gcc-objc-5.3.0_multilib-x86_64-3alien.txz | * gcc-objc-5.3.0_multilib-x86_64-3alien.txz |
* The GNU libc libraries: | * The GNU libc libraries: |
* glibc-2.23_multilib-x86_64-1alien.txz | * glibc-2.23_multilib-x86_64-2alien.txz |
* glibc-i18n-2.23_multilib-x86_64-1alien.txz | * glibc-i18n-2.23_multilib-x86_64-2alien.txz |
* glibc-profile-2.23_multilib-x86_64-1alien.txz | * glibc-profile-2.23_multilib-x86_64-2alien.txz |
* glibc-solibs-2.23_multilib-x86_64-1alien.txz | * glibc-solibs-2.23_multilib-x86_64-2alien.txz |
| |
====Slackware64 current==== | ====Slackware64 current==== |
| |
* The gcc compiler suite: | * The gcc compiler suite: |
* gcc-5.4.0_multilib-x86_64-1alien.txz | * gcc-7.1.0_multilib-x86_64-2alien.txz |
* gcc-g++-5.4.0_multilib-x86_64-1alien.txz | * gcc-brig-7.1.0_multilib-x86_64-2alien.txz |
* gcc-gfortran-5.4.0_multilib-x86_64-1alien.txz | * gcc-g++-7.1.0_multilib-x86_64-2alien.txz |
* gcc-gnat-5.4.0_multilib-x86_64-1alien.txz | * gcc-gfortran-7.1.0_multilib-x86_64-2alien.txz |
* gcc-go-5.4.0_multilib-x86_64-1alien.txz | * gcc-gnat-7.1.0_multilib-x86_64-2alien.txz |
* gcc-java-5.4.0_multilib-x86_64-1alien.txz | * gcc-go-7.1.0_multilib-x86_64-2alien.txz |
* gcc-objc-5.4.0_multilib-x86_64-1alien.txz | * gcc-objc-7.1.0_multilib-x86_64-2alien.txz |
* The GNU libc libraries: | * The GNU libc libraries: |
* glibc-2.24_multilib-x86_64-1alien.txz | * glibc-2.25_multilib-x86_64-3alien.txz |
* glibc-i18n-2.24_multilib-x86_64-1alien.txz | * glibc-i18n-2.25_multilib-x86_64-3alien.txz |
* glibc-profile-2.24_multilib-x86_64-1alien.txz | * glibc-profile-2.25_multilib-x86_64-3alien.txz |
* glibc-solibs-2.24_multilib-x86_64-1alien.txz | * glibc-solibs-2.25_multilib-x86_64-3alien.txz |
| |
There is one additional package that you install using the "installpkg" program: | <note>Since the update to gcc 7, there is no more ''gcc-java'' package because its development has ceased.</note> |
| <note>The ''glibc-zoneinfo'' package is not a part of multilib, since it does not contain code. You need to install Slackware's stock ''glibc-zoneinfo'' package.</note> |
| |
| ====All releases of Slackware==== |
| |
| There is one additional package that you need to install using the "installpkg" program. The actual version may vary for each release of Slackware, but the package can be found in the same directory where you also find the multilib versions of ''gcc'' and ''glibc'': |
| |
* The "32bit toolkit" (scripts that facilitate the creation of 32bit packages) | * The "32bit toolkit" (scripts that facilitate the creation of 32bit packages) |
* compat32-tools-3.7-noarch-1alien.tgz | * compat32-tools-3.7-noarch-1alien.tgz |
| |
<note>Slamd64 had separate 64bit and 32bit gcc/glibc multilib packages.\\ However, I believe that it is cleaner to keep these essential multilib packages undivided. I followed the concept already used in Slackware64's own //binutils// package, which has 64-bit and 32-bit multilib capability bundled into one package.</note> | |
| |
| |
libtool | libtool |
llvm | llvm |
| opencl-headers |
| |
# The L/ series: | # The L/ series: |
| |
| SDL2 |
alsa-lib | alsa-lib |
alsa-oss | alsa-oss |
esound | esound |
expat | expat |
| ffmpeg |
fftw | fftw |
freetype | freetype |
fribidi | fribidi |
gamin | gamin |
| gc |
gdk-pixbuf2 | gdk-pixbuf2 |
giflib | giflib |
gst-plugins-good | gst-plugins-good |
gst-plugins-good0 | gst-plugins-good0 |
| gst-plugins-libav |
gstreamer | gstreamer |
gstreamer0 | gstreamer0 |
jasper | jasper |
json-c | json-c |
| lame |
lcms | lcms |
lcms2 | lcms2 |
libart_lgpl | libart_lgpl |
libasyncns | libasyncns |
| libclc |
| libedit |
libelf | libelf |
libexif | libexif |
libmpc | libmpc |
libnl3 | libnl3 |
| libnotify |
libogg | libogg |
libpcap | libpcap |
libtermcap | libtermcap |
libtiff | libtiff |
| libunistring |
libusb | libusb |
libvorbis | libvorbis |
lzo | lzo |
ncurses | ncurses |
| ocl-icd |
openjpeg | openjpeg |
orc | orc |
popt | popt |
pulseaudio | pulseaudio |
| python-six |
qt | qt |
readline | readline |
openssl | openssl |
p11-kit | p11-kit |
| samba |
| |
# The X/ series: | # The X/ series: |
libXfixes | libXfixes |
libXfont | libXfont |
| libXfont2 |
libXfontcache | libXfontcache |
libXft | libXft |
libepoxy | libepoxy |
libfontenc | libfontenc |
| libinput |
libpciaccess | libpciaccess |
libva | libva |
mesa | mesa |
pixman | pixman |
| vulkan-sdk |
xcb-util | xcb-util |
| |
* [[http://slackware.com/~alien/multilib/ | http://slackware.com/~alien/multilib/]] | * [[http://slackware.com/~alien/multilib/ | http://slackware.com/~alien/multilib/]] |
* [[http://bear.alienbase.nl/mirrors/people/alien/multilib/ | http://bear.alienbase.nl/mirrors/people/alien/multilib/]] | * [[http://bear.alienbase.nl/mirrors/people/alien/multilib/ | http://bear.alienbase.nl/mirrors/people/alien/multilib/]] |
* [[http://slackware.org.uk/people/alien/multilib/| http://slackware.org.uk/people/alien/multilib/]] | * [[http://slackware.uk/people/alien/multilib/| http://slackware.uk/people/alien/multilib/]] |
* [[http://alien.slackbook.org/slackware/multilib/| http://alien.slackbook.org/slackware/multilib/]] | * [[http://alien.slackbook.org/slackware/multilib/| http://alien.slackbook.org/slackware/multilib/]] |
* [[http://slackbuilds.org/mirror/alien/multilib/| http://slackbuilds.org/mirror/alien/multilib/]] | * [[http://slackbuilds.org/mirror/alien/multilib/| http://slackbuilds.org/mirror/alien/multilib/]] |
| |
| |
===== 3rd party support tools ===== | ===== 3rd party support tools ===== |
| |
===== Acknowledgements ===== | ===== Acknowledgements ===== |
| |
* A lot of thanks should go to Fred Emmott, who created Slamd64, the original unofficial 64-bit fork of Slackware. Although Slackware64 was not based on Fred's work, I still learnt most of what I know about setting up the 32-bit part of a multilib Linux from his writings that are found in Slamd64. | * A lot of thanks should go to Fred Emmott, who created Slamd64, the original unofficial 64-bit fork of Slackware. Although Slackware64 was not based on Fred's work, I still learnt most of what I know about setting up the 32-bit part of a multilib Linux from his writings that are found in Slamd64.\\ Note that Slamd64 had separate 64bit and 32bit gcc/glibc multilib packages. However, I believe that it is cleaner to keep these essential multilib packages undivided. I followed the concept already used in Slackware64's own //binutils// package, which has 64-bit and 32-bit multilib capability bundled into one package. |
| |
* Cross Linux From Scratch.\\ The CLFS Wiki (http://trac.cross-lfs.org/wiki/read#ReadtheCrossLinuxFromScratchBookOnline) is a 'must-read' if you want to understand how to port Linux to a new architecture. I took several ideas, concepts and patches from them when creating Slackware64 from scratch, and again when I created my multilib gcc/glibc packages from scratch (my README on this multilib-from-scratch is available in the ./source directory). | * Cross Linux From Scratch.\\ The CLFS Wiki (http://trac.cross-lfs.org/wiki/read#ReadtheCrossLinuxFromScratchBookOnline) is a 'must-read' if you want to understand how to port Linux to a new architecture. I took several ideas, concepts and patches from them when creating Slackware64 from scratch, and again when I created my multilib gcc/glibc packages from scratch (my README on this multilib-from-scratch is available in the ./source directory). |