!ayCRiZriCVtuCUpeLp:nixos.org

Nix Cross Compiling

581 Members
127 Servers

Load older messages


SenderMessageTime
16 Apr 2025
@rosssmyth:matrix.orgrosssmythThe edge case was...all of windows02:24:45
@rosscomputerguy:matrix.orgTristan RossOh02:27:33
@augyg:matrix.orglazyLambda set a profile picture.03:24:14
@alexandrutocar:matrix.org- joined the room.11:46:48
17 Apr 2025
@axelparolta:matrix.orgaxel joined the room.18:02:30
@fliegendewurst:matrix.orgFliegendeWurstAre there really platforms where the byte order is different for floats and integers?19:09:55
@fliegendewurst:matrix.orgFliegendeWurst* Are there really platforms where the byte order is different for floats and integers? I'm wondering, because I found this check: https://github.com/john30/ebusd/blob/25.1/CMakeLists.txt#L139-L165 But could not find any platform on godbolt that would trigger the other case.19:15:46
@rosssmyth:matrix.orgrosssmythFor IEEE floats, no. 19:38:59
@rosssmyth:matrix.orgrosssmythI think PDP had a funny thing where this was not true, but that was also before IEEE floats19:39:34
@rosssmyth:matrix.orgrosssmyth* I think PDP had a funny thing where this was not always true, but that was also before IEEE floats19:39:50
@rosssmyth:matrix.orgrosssmythLLVM makes a lot of assumptions about the fp environment, so I would be surprised if llvm even supported such a thing.19:41:27
@rosssmyth:matrix.orgrosssmyth* LLVM makes a lot of implicit assumptions about the fp environment, so I would be surprised if llvm even supported such a thing.19:43:28
@trofi:matrix.org@trofi:matrix.org

Checking gcc source tree for case of WORDS_BIG_ENDIAN != FLOAT_WORDS_BIG_ENDIAN git grep -P '#define (FLOAT_)?WORDS_BIG_ENDIAN' https://bpa.st/raw/NKQQ I think I only see pdp11:

gcc/config/pdp11/pdp11.h:#define WORDS_BIG_ENDIAN 1
gcc/config/pdp11/pdp11.h:#define FLOAT_WORDS_BIG_ENDIAN 0
21:28:05
@trofi:matrix.org@trofi:matrix.org (and it's one of two targets(along with mmix) that explicitly defines FLOAT_WORDS_BIG_ENDIAN, mmix probably does it out of redundancy) 21:30:35
18 Apr 2025
@rosscomputerguy:matrix.orgTristan Ross
qttranslations> -- Install configuration: "Release"
qttranslations> -- Installing: /nix/store/fx4yvhdpq7kld3gq0dqcxd5y7yb4i942-qttranslations-6.9.0/translations/assistant_ar.qm
qttranslations> CMake Error at src/translations/cmake_install.cmake:54 (file):
qttranslations>   file INSTALL cannot copy file
qttranslations>   "/build/qttranslations-everywhere-src-6.9.0/build//nix/store/fx4yvhdpq7kld3gq0dqcxd5y7yb4i942-qttranslations-6.9.0/translations/assistant_ar.qm"
qttranslations>   to
qttranslations>   "/nix/store/fx4yvhdpq7kld3gq0dqcxd5y7yb4i942-qttranslations-6.9.0/translations/assistant_ar.qm":
qttranslations>   Permission denied.
qttranslations> Call Stack (most recent call first):
qttranslations>   src/cmake_install.cmake:47 (include)
qttranslations>   cmake_install.cmake:47 (include)
qttranslations>
qttranslations>
qttranslations> FAILED: CMakeFiles/install.util
qttranslations> cd /build/qttranslations-everywhere-src-6.9.0/build && /nix/store/lc66gmgm58bbx4y5jjkqscriwvshp9fd-cmake-3.31.6/bin/cmake -P cmake_install.cmake
qttranslations> ninja: build stopped: subcommand failed.

Compiling with neoverse-n1 in gcc.tune, qttranslations failed in an odd way

01:01:51
@rosscomputerguy:matrix.orgTristan RossDang, gfortran is broken and it's the same as https://github.com/NixOS/nixpkgs/issues/37495002:54:22
@simon.brandner:envs.net@simon.brandner:envs.net joined the room.07:29:01
@simon.brandner:envs.net@simon.brandner:envs.net Hi, could someone please help me out with making a nix shell for compiling using arm-linux-gnueabihf-gcc with -lrt and -lpthread on my x86 system? Thank you 07:31:35
@dramforever:matrix.orgdramforever try pkgsCross.armv7l-hf-multiplatform.stdenv.cc? 07:34:11
@dramforever:matrix.orgdramforever

like this

$ cat hello.c                      
#include <stdio.h>
int main() { printf("hello sizeof(void*) = %zd\n", sizeof(void*)); }
$ vim hello.c                
$ armv7l-unknown-linux-gnueabihf-gcc -o armhello -lrt -lpthread hello.c
$ qemu-arm
qemu: no user program specified
$ qemu-arm ./armhello 
hello sizeof(void*) = 4
07:36:33
@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@simon.brandner:envs.netI'll give it a go in a minute07:40:21
@simon.brandner:envs.net@simon.brandner:envs.net

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@simon.brandner:envs.net

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@simon.brandner:envs.net(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@epvpn) changed their display name from jopejoe1 to jopejoe1 (4094@eh22).12:59:36

Show newer messages


Back to Room ListRoom Version: 6