Hello,
From x86_64-linux (but not aarch64-linux), I’m able to cross compile pkgs.pkgsCross.x86_64-freebsd.hello
. However, I’m not able to cross-compile a “hello world” Rust program for freebsd.
I attempted with this flake and a “hello world” rust app (cargo new foo
).
{
description = "Basic template for nix + rust";
inputs.nixpkgs.url = "github:nixos/nixpkgs/release-23.11";
outputs = {
self,
nixpkgs,
}: let
systems = ["aarch64-darwin" "x86_64-linux" "aarch64-linux"];
eachSystem = with nixpkgs.lib;
f:
foldAttrs mergeAttrs {}
(map (s: mapAttrs (_: v: {${s} = v;}) (f s)) systems);
# Placeholder name allows one to enter `nix develop` prior to `Cargo.toml` existing
inherit ((builtins.fromTOML (builtins.readFile ./Cargo.toml)).package) name;
in
eachSystem (
system: let
pkgs = import nixpkgs {
inherit system;
};
in {
packages = {
default = self.packages.${system}.${name};
${name} = pkgs.pkgsCross.x86_64-freebsd.callPackage ({rustPlatform}:
rustPlatform.buildRustPackage {
inherit name;
inherit ((builtins.fromTOML (builtins.readFile ./Cargo.toml)).package) version;
src = ./.;
cargoLock.lockFile = ./Cargo.lock;
}) {};
};
}
);
}
I get a boatload of linker errors:
> x86_64-unknown-freebsd13-ld: error: version script assignment of 'FBSD_1.0' to symbol '__sF' failed: symbol not defined
> x86_64-unknown-freebsd13-ld: error: version script assignment of 'FBSD_1.3' to symbol 'strtoq_l' failed: symbol not defined
> x86_64-unknown-freebsd13-ld: error: version script assignment of 'FBSD_1.3' to symbol 'strtouq_l' failed: symbol not defined
> x86_64-unknown-freebsd13-ld: error: version script assignment of 'FBSD_1.4' to symbol '__ns_newmsg_init' failed: symbol not defined
> x86_64-unknown-freebsd13-ld: error: version script assignment of 'FBSD_1.4' to symbol '__ns_newmsg_copy' failed: symbol not defined
> x86_64-unknown-freebsd13-ld: error: version script assignment of 'FBSD_1.4' to symbol '__ns_newmsg_id' failed: symbol not defined
> x86_64-unknown-freebsd13-ld: error: version script assignment of 'FBSD_1.4' to symbol '__ns_newmsg_flag' failed: symbol not defined
> x86_64-unknown-freebsd13-ld: error: version script assignment of 'FBSD_1.4' to symbol '__ns_newmsg_q' failed: symbol not defined
> x86_64-unknown-freebsd13-ld: error: version script assignment of 'FBSD_1.4' to symbol '__ns_newmsg_rr' failed: symbol not defined
> x86_64-unknown-freebsd13-ld: error: version script assignment of 'FBSD_1.4' to symbol '__ns_newmsg_done' failed: symbol not defined
> x86_64-unknown-freebsd13-ld: error: version script assignment of 'FBSD_1.4' to symbol '__ns_rdata_unpack' failed: symbol not defined
> x86_64-unknown-freebsd13-ld: error: version script assignment of 'FBSD_1.4' to symbol '__ns_rdata_equal' failed: symbol not defined
> x86_64-unknown-freebsd13-ld: error: version script assignment of 'FBSD_1.4' to symbol '__ns_rdata_refers' failed: symbol not defined
> x86_64-unknown-freebsd13-ld: error: version script assignment of 'FBSD_1.4' to symbol 'bsearch_b' failed: symbol not defined
> x86_64-unknown-freebsd13-ld: error: version script assignment of 'FBSDprivate_1.0' to symbol '__collate_load_error' failed: symbol not defined
> x86_64-unknown-freebsd13-ld: error: version script assignment of 'FBSDprivate_1.0' to symbol '_mknod' failed: symbol not defined
> x86_64-unknown-freebsd13-ld: error: version script assignment of 'FBSDprivate_1.0' to symbol '__sys_mknod' failed: symbol not defined
Is it possible to cross-compile rust for freebsd?