LINUX.ORG.RU

Кросс-компиляция в Rust под OpenBSD

 , ,


0

4

В golang это делается очень просто:

$ GOOS=openbsd go build

cargo умеет кросс-компиляцию через ключ --target, но:

$ cargo build --target=x86_64-unknown-openbsd
[...]
error[E0463]: can't find crate for `core`
  |
  = note: the `x86_64-unknown-openbsd` target may not be installed
  = help: consider downloading the target with `rustup target add x86_64-unknown-openbsd`

For more information about this error, try `rustc --explain E0463`.
[...]

$ rustup target add x86_64-unknown-openbsd
error: toolchain 'stable-x86_64-unknown-linux-gnu' does not support target 'x86_64-unknown-openbsd'; did you mean 'x86_64-unknown-freebsd'?
note: you can see a list of supported targets with `rustc --print=target-list`
note: if you are adding support for a new target to rustc itself, see https://rustc-dev-guide.rust-lang.org/building/new-target.html

$ rustc --print=target-list | grep x86_64-unknown-openbsd
x86_64-unknown-openbsd

Что я делаю не так? Или я все делаю так, но там не осилили? Что происходит?

Версии:

$ uname -r
6.14.4-arch1-2
$ cargo --version
cargo 1.88.0 (873a06493 2025-05-10)


Последнее исправление: gaylord (всего исправлений: 1)

error: toolchain ‘stable-x86_64-unknown-linux-gnu’ does not support target ‘x86_64-unknown-openbsd’;

видать тулчейны конфликтуют, может x86_64-unknown-openbsd в отдельной песочнице собирать надо в которой не установлен stable-x86_64-unknown-linux-gnu?

zurg
()

Выглядит так как будто компилятор поддерживает этот таргет, но нету готовых собраных либ стандартной библиотеки, попробуй собрать сам std из исходников флагом build-std

cargo +nightly build -Z build-std --target x86_64-unknown-openbsd

pftBest ★★★★
()
Ответ на: комментарий от gaylord

Вон там написано, что от freebsd я такое поставить могу.

Зря ты в школе английский прогуливал.

Там написано что тулчейн не знает что такое openbsd и предполагает, что ты опечатался и хотел написать freebsd, который он знает.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от anonymous

Но есть в rustc. Значит ли это что у них ноги разъехались? Или это история про тиры поддержки и нужно собирать stdlib руками, как советовали выше (пока не собирается)?

gaylord
() автор топика
Ответ на: комментарий от gaylord

Или это история про тиры поддержки и нужно собирать stdlib руками, как советовали выше (пока не собирается)?

Именно, x86_64-unknown-openbsd, в третьем тире, который

Tier 3 targets are those which the Rust codebase has support for, but which the Rust project does not build or test automatically, so they may or may not work. Official builds are not available.

https://doc.rust-lang.org/rustc/platform-support.html#tier-3

snake266 ★★★
()