18 Apr 2025 |
dramforever | * 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 |
Šimon Brandner | I'll give it a go in a minute | 07:40:21 |
Š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 | i can't reproduce this problem, how are you running this? | 09:36:34 |
dramforever | what are you compiling | 09:36:39 |
dramforever | hmm, could it be different a nixpkgs version? | 09:40:02 |
dramforever | yeah i don't get see any problem on latest nixos-unstable (2631b0b7abcea6e640ce31cd78ea58910d31e650 ) | 10:11:22 |
Š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 |
Š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 (4094@eh22) changed their display name from jopejoe1 to jopejoe1 (4094@eh22). | 12:59:36 |
| alexfmpe changed their profile picture. | 23:55:44 |
20 Apr 2025 |
Colin | anyone given thought about how to get blueprint-compiler to be cross friendly? | 02:54:51 |
Colin | it'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 it | 02:57:11 |
dramforever | one possible way is to use an emulator of the host platform | 03:27:18 |
dramforever | try grepping stdenv.hostPlatform.emulator nix nixpkgs for examples | 03:27:53 |
dramforever | * try grepping stdenv.hostPlatform.emulator in nixpkgs for examples | 03:27:56 |
dramforever | ... you know you have nix brain when you typo "in" into "nix" | 03:28:15 |
| spikespaz set a profile picture. | 04:26:18 |
21 Apr 2025 |
Tristan 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 | what's the command for the actual build of exec-cmd.o ? | 00:16:55 |
Tristan Ross | Idk, I don't see it | 00:18:09 |
dramforever | V=1 to makeflags probably | 00:22:58 |
dramforever | * V=1 to makeFlags probably | 00:23:03 |
Tristan Ross | That's already set | 00:23:14 |
dramforever | huh, really? no exec-cmd.o at all in log? | 00:23:34 |
Tristan Ross | I added CFLAGS=-I$(readlink -e include) and get even worse errors | 00:23:36 |
Tristan Ross | None | 00:23:40 |
Tristan Ross | Because it's a make inside a make | 00:23:45 |
dramforever | i don't see why that matters | 00:24:27 |
Tristan Ross | It's not passing through the V | 00:24:59 |