Packaging/32bit Applications: Difference between revisions

From NixOS Wiki
imported>Makefu
m Makefu moved page Cross Compiling to Packaging/32bit Applications: not really cross-compiling
Klinger (talk | contribs)
mNo edit summary
 
(5 intermediate revisions by one other user not shown)
Line 3: Line 3:
'''Question''':  I'm invoking gcc with -m32 and it fails to find <code>`gnu/stubs-32.h`</code><br/>
'''Question''':  I'm invoking gcc with -m32 and it fails to find <code>`gnu/stubs-32.h`</code><br/>
'''Answer (clever)''': you want to use <code>pkgsi686Linux</code> instead of pkgs, so things like <code>pkgsi686Linux.stdenv.mkDerivation </code> or <code>pkgsi686Linux.callPackage</code> then nix will give you 32bit everything<ref>[https://logs.nix.samueldr.com/nixos/2018-03-19#1521474071-1521474422; clever, #nixos 2018-03-19]</ref>
'''Answer (clever)''': you want to use <code>pkgsi686Linux</code> instead of pkgs, so things like <code>pkgsi686Linux.stdenv.mkDerivation </code> or <code>pkgsi686Linux.callPackage</code> then nix will give you 32bit everything<ref>[https://logs.nix.samueldr.com/nixos/2018-03-19#1521474071-1521474422; clever, #nixos 2018-03-19]</ref>
== Building software with both 32- and 64-bit executables ==
If a package wants to compile both 32/64-bit executables, you need a compiler with multilib support.
Nixpkgs provides <code>multiStdenv.mkDerivation</code> that should be used instead <code>stdenv.mkDerivation</code>.
This is equivalent to using <code>gcc-multilib</code> in debian derivatives.
[[Category:Development]]

Latest revision as of 20:42, 24 April 2024

Building software with 32bit gcc

Question: I'm invoking gcc with -m32 and it fails to find `gnu/stubs-32.h`
Answer (clever): you want to use pkgsi686Linux instead of pkgs, so things like pkgsi686Linux.stdenv.mkDerivation or pkgsi686Linux.callPackage then nix will give you 32bit everything[1]

Building software with both 32- and 64-bit executables

If a package wants to compile both 32/64-bit executables, you need a compiler with multilib support. Nixpkgs provides multiStdenv.mkDerivation that should be used instead stdenv.mkDerivation. This is equivalent to using gcc-multilib in debian derivatives.