Я пытаюсь выполнить кросс-компиляцию моего проекта Rust в Mac OS для Linux, используя cargo build --target=x86_64-unknown-linux-musl
.
- Я установил двоичный файл для Linux + musl кросс-компиляцию на Mac, используя
brew install FiloSottile/musl-cross/musl-cross
какВ идеале я бы хотел автономный бинарный файл. - Я также установил цель, используя
rustup target add x86_64-unknown-linux-gnu
- И у меня в моем
.cargo/config
есть следующее:
[target.x86_64-unknown-linux-musl]
linker = "x86_64-linux-musl-gcc"
Однако я столкнулся с проблемами с 2 библиотеками - sqlite3 и pcap:
= note: /usr/local/Cellar/musl-cross/0.9.8/libexec/bin/../lib/gcc/x86_64-linux-musl/6.4.0/../../../../x86_64-linux-musl/bin/ld: cannot find -lsqlite3
/usr/local/Cellar/musl-cross/0.9.8/libexec/bin/../lib/gcc/x86_64-linux-musl/6.4.0/../../../../x86_64-linux-musl/bin/ld: cannot find -lpcap
collect2: error: ld returned 1 exit status
Мне удалось решить проблему компоновщика sqlite3, добавив features = ["bundled"]
в мой файл Cargo.toml
(аналогично тому, чтоописанный здесь - https://users.rust -lang.org / t / linker-неспособен найти-lsqlite3 / 23230/18 ), так как это, вероятно, построило его из источника (что было здорово), но когда я попытался сделать то же самоес pcap он выдал следующую ошибку:
the package `myProject` depends on `pcap`, with features: `bundled` but `pcap` does not have these features.
После прочтения где-то я также попытался (с небольшими надеждами) указать путь к установленному libpcap на mac, используя RUSTPATH='-L/...' cargo build ...
, но это, конечно, привело кнеопределенные ошибки символов.
Любые идеи, как я могу обойти эту проблемуи кросс-компилировать мой проект Rust в статически связанный бинарный файл на macos для запуска на linux?