Скомпилируйте Rust-программу для raspberry pi `armv7-unknown-linux-gnueabihf` из 64-битной Arch Linux - PullRequest
1 голос
/ 14 мая 2019

Я хочу скомпилировать программу Rust с моего ноутбука для моего Raspberry Pi.У меня проблемы с обновлением версии C на pi, и я не могу установить ржавчину для ее компиляции.

Я следовал этому учебнику по кросс-компиляции ржавчины для rpi.Я могу без проблем скомпилировать простые программы, однако программа, которую я хочу скомпилировать, использует sqlite и openssl, и именно здесь у меня возникают проблемы.

Я установил lib32-dbus, lib32-openssl и lib32-sqlite.Выполнение export OPENSSL_LIB_DIR=/usr/lib32 и export OPENSSL_INCLUDE_DIR=/usr/include/openssl-1.0 исправляет openssl, но компоновщик по-прежнему не может найти 32-разрядную версию библиотеки sqlite и завершает работу с этой ошибкой:

$ PKG_CONFIG_ALLOW_CROSS=1 cargo build --target armv7-unknown-linux-gnueabihf

...

note: /usr/lib/libsqlite3.so: file not recognized: file format not recognized

Полная ошибка здесь .

Есть ли какая-нибудь переменная SQLITE_LIB_DIR env, которую я могу установить?Если нет, то как мне указать компоновщику правильную версию?Спасибо.

Редактировать: Я сейчас скачал и скомпилировал libsqlite3 для arm linux.Теперь мне просто нужно знать, как указать компоновщик на версию arm.

1 Ответ

1 голос
/ 03 июля 2019

Вы не можете кросс-компилировать вашу программу Rust с каждой функцией OpenSSL, потому что некоторые версии OpenSSL не поддерживают (функция как Vendored), которая помогает для кросс-компиляции.Таким образом, вы можете использовать версию OpenSSL, которая поддерживает эту функцию, например openssl = { version = "0.10", features = ["vendored"] }

...