!ayCRiZriCVtuCUpeLp:nixos.org

Nix Cross Compiling

483 Members
101 Servers

Load older messages


SenderMessageTime
18 Apr 2025
@dramforever:matrix.orgdramforever *

like this

$ cat hello.c
#include <stdio.h>
int main() { printf("hello sizeof(void*) = %zd\n", sizeof(void*)); }
$ armv7l-unknown-linux-gnueabihf-gcc -o armhello -lrt -lpthread hello.c
$ qemu-arm ./armhello
hello sizeof(void*) = 4
07:36:54
@simon.brandner:envs.netŠimon BrandnerI'll give it a go in a minute07:40:21
@simon.brandner:envs.netŠimon Brandner

So I simply tried nix-shell -p pkgsCross.armv7l-hf-multiplatform.stdenv.cc, if that is what you meant and got these errors:

/nix/store/viscj6hs10c5as7h53cxxw59yvgk505z-armv7l-unknown-linux-gnueabihf-binutils-2.43.1/bin/armv7l-unknown-linux-gnueabihf-ld: cannot find -lrt: No such file or directory
/nix/store/viscj6hs10c5as7h53cxxw59yvgk505z-armv7l-unknown-linux-gnueabihf-binutils-2.43.1/bin/armv7l-unknown-linux-gnueabihf-ld: cannot find -lpthread: No such file or direc
tory
/nix/store/viscj6hs10c5as7h53cxxw59yvgk505z-armv7l-unknown-linux-gnueabihf-binutils-2.43.1/bin/armv7l-unknown-linux-gnueabihf-ld: cannot find -lc: No such file or directory
07:55:38
@dramforever:matrix.orgdramforeveri can't reproduce this problem, how are you running this?09:36:34
@dramforever:matrix.orgdramforeverwhat are you compiling09:36:39
@dramforever:matrix.orgdramforeverhmm, could it be different a nixpkgs version?09:40:02
@dramforever:matrix.orgdramforever yeah i don't get see any problem on latest nixos-unstable (2631b0b7abcea6e640ce31cd78ea58910d31e650) 10:11:22
@simon.brandner:envs.netŠimon Brandner

So this turned out to work:

# flake.nix
{
  inputs = {
    nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
  };
  outputs = {nixpkgs, ...}: let
    system = "x86_64-linux";
    pkgs = import nixpkgs {
      inherit system;
      crossSystem = {
        config = "armv7l-linux-gnueabihf";
      };
    };
  in {
    devShells.${system}.default = import ./nix/shell.nix {inherit pkgs;};
  };
}

and

# nix/shell.nix
{pkgs, ...}:
pkgs.mkShell {
  buildInputs = [
    pkgs.glibc
    pkgs.glibc.static
  ];

  makeFlags = [
    "CC=${pkgs.stdenv.cc.targetPrefix}cc"
    "CXX=${pkgs.stdenv.cc.targetPrefix}g++"
  ];
}

with pkgs.glibc.static being the thing that made the difference

10:32:16
@simon.brandner:envs.netŠimon Brandner(it simply turned out the program needed to be statically linked, so it needed the static version of glibc which now makes sense given the circumstances 😅)13:18:42
19 Apr 2025
@jopejoe1:matrix.orgjopejoe1 (4094@eh22) changed their display name from jopejoe1 to jopejoe1 (4094@eh22).12:59:36
@alexfmpe:matrix.orgalexfmpe changed their profile picture.23:55:44
20 Apr 2025
@colin:uninsane.orgColinanyone given thought about how to get blueprint-compiler to be cross friendly?02:54:51
@colin:uninsane.orgColinit's used by a lot of gtk4 apps. runs at compile time and wants to load the GI typelibs used by the application. not sure how to wrangle that except by building an extra copy of every runtime dependency, but targeting the build machine, so that blueprint-compiler can import it02:57:11
@dramforever:matrix.orgdramforeverone possible way is to use an emulator of the host platform03:27:18
@dramforever:matrix.orgdramforever try grepping stdenv.hostPlatform.emulator nix nixpkgs for examples 03:27:53
@dramforever:matrix.orgdramforever * try grepping stdenv.hostPlatform.emulator in nixpkgs for examples 03:27:56
@dramforever:matrix.orgdramforever... you know you have nix brain when you typo "in" into "nix"03:28:15
@spikespaz:envs.netspikespaz set a profile picture.04:26:18
21 Apr 2025
@rosscomputerguy:matrix.orgTristan Ross

Trying to fix pkgsLLVM.linux to work correctly, got this odd issue:

linux> make -f /build/linux-6.6.87/tools/build/Makefile.build dir=. obj=fixdep
linux> /nix/store/rpxlridr3yn6mbmd34r0bya9qv91b79s-gcc-wrapper-14.2.1.20250322/bin/cc   -o /build/linux-6.6.87/build/tools/bpf/resolve_btfids/fixdep /build/linux-6.6.87/build/tools/bpf/resolve_btfids/fixdep-in.o
linux> mkdir -p /build/linux-6.6.87/build/tools/bpf/resolve_btfids//libsubcmd
linux> make -C /build/linux-6.6.87/tools/lib/subcmd/ OUTPUT=/build/linux-6.6.87/build/tools/bpf/resolve_btfids/libsubcmd/ \
linux>             DESTDIR=/build/linux-6.6.87/build/tools/bpf/resolve_btfids/libsubcmd/ AR="/nix/store/0w9bd0ljiyj2crmywkm0mvm4nwsswgb0-binutils-wrapper-2.44/bin/ar" CC="/nix/store/rpxlridr3yn6mbmd34r0bya9qv91b79s-gcc-wrapper-14.2.1.20250322/bin/cc" LD="/nix/store/0w9bd0ljiyj2crmywkm0mvm4nwsswgb0-binutils-wrapper-2.44/bin/ld" ARCH="arm64" CROSS_COMPILE="" EXTRA_CFLAGS="" prefix= subdir= \
linux>             /build/linux-6.6.87/build/tools/bpf/resolve_btfids/libsubcmd/libsubcmd.a install_headers
linux> exec-cmd.c:2:10: fatal error: linux/compiler.h: No such file or directory
linux>     2 | #include <linux/compiler.h>
linux>       |          ^~~~~~~~~~~~~~~~~~
linux> compilation terminated.
linux> make[6]: *** [/build/linux-6.6.87/tools/build/Makefile.build:98: /build/linux-6.6.87/build/tools/bpf/resolve_btfids/libsubcmd/exec-cmd.o] Error 1
linux> make[5]: *** [Makefile:80: /build/linux-6.6.87/build/tools/bpf/resolve_btfids/libsubcmd/libsubcmd-in.o] Error 2
linux> make[4]: *** [Makefile:58: /build/linux-6.6.87/build/tools/bpf/resolve_btfids//libsubcmd/libsubcmd.a] Error 2
linux> make[3]: *** [Makefile:76: bpf/resolve_btfids] Error 2
linux> make[2]: *** [/build/linux-6.6.87/Makefile:1362: tools/bpf/resolve_btfids] Error 2
linux> make[1]: *** [/build/linux-6.6.87/Makefile:234: __sub-make] Error 2
linux> make[1]: Leaving directory '/build/linux-6.6.87/build'
linux> make: *** [Makefile:234: __sub-make] Error 2
00:12:07
@dramforever:matrix.orgdramforever what's the command for the actual build of exec-cmd.o? 00:16:55
@rosscomputerguy:matrix.orgTristan RossIdk, I don't see it00:18:09
@dramforever:matrix.orgdramforever V=1 to makeflags probably 00:22:58
@dramforever:matrix.orgdramforever * V=1 to makeFlags probably 00:23:03
@rosscomputerguy:matrix.orgTristan RossThat's already set00:23:14
@dramforever:matrix.orgdramforever huh, really? no exec-cmd.o at all in log? 00:23:34
@rosscomputerguy:matrix.orgTristan Ross I added CFLAGS=-I$(readlink -e include) and get even worse errors 00:23:36
@rosscomputerguy:matrix.orgTristan RossNone00:23:40
@rosscomputerguy:matrix.orgTristan RossBecause it's a make inside a make00:23:45
@dramforever:matrix.orgdramforeveri don't see why that matters00:24:27
@rosscomputerguy:matrix.orgTristan Ross It's not passing through the V 00:24:59

Show newer messages


Back to Room ListRoom Version: 6