Сбой автономного исполняемого файла для ARMv7, поскольку он "не может открыть общий объектный файл" для libstd - PullRequest
3 голосов
/ 23 мая 2019

Я пытаюсь создать автономный двоичный файл на основе Rust, используя:

cargo --target=armv7-unknown-linux-gnueabihf --release

Каждый раз, когда я собираю двоичный файл для целевой системы, копирую и выполняю этот двоичный файл в целевой системе, он будет паниковать:

<binary>:error while loading shared libraries: 
 libstd-42431e74081a30a8.so: 
cannot open shared object file: No such file or directory

Это означает, что он не может найти динамическую библиотеку.

Если динамические библиотеки копируются на внешний SSD и есть путь к ним, двоичный файл не будет паниковать при поиске библиотек.

Первоначально .cargo / config имел

rustflags = ["-C","target-feature=prefer-dynamic]

Я также пытался

rustflags = ["-C", "target-feature=+crt-static"]

Но двоичный файл все еще требует внешних динамических библиотек

Содержимое файла .cargo / config:

[target.armv7-unknown-linux-gnueabihf]
ar = "arm-dey-linux-gnueabi-gcc-ar"
linker = "gcc-sysroot"

[build]
rustflags = ["-C", "target-feature=+crt-static"]

Я ожидаю, что двоичный файл цели будет выполняться без зависимостей от динамических системных файлов .so или .rlib, поскольку у нас есть система ограничения пространства, где SSD может отсутствовать.

...