从64位Arch Linux上为树莓派`armv7-unknown-linux-gnueabihf`编译Rust程序

时间:2019-05-14 17:22:31

标签: linux rust raspberry-pi cross-compiling cargo

我想从笔记本电脑上为树莓派编译一个Rust程序。我在pi上升级C版本时遇到问题,无法安装rust从那里编译它。

我按照this教程为rpi交叉编译了锈。我可以用这种方式编译简单程序,没有问题,但是我要编译的程序使用sqlite和openssl,这就是我遇到的问题。

我已经安装了lib32-dbuslib32-openssllib32-sqlite。进行export OPENSSL_LIB_DIR=/usr/lib32export OPENSSL_INCLUDE_DIR=/usr/include/openssl-1.0修复了openssl,但是链接器仍然找不到sqlite lib的32位版本,并退出并显示此错误:

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

...

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

完全错误here

我可以设置某种SQLITE_LIB_DIR env变量吗?如果没有,如何将链接器指向正确的版本?谢谢。

编辑:我现在下载并交叉编译用于arm linux的libsqlite3。现在,我只需要知道如何将链接器指向arm版本即可。

1 个答案:

答案 0 :(得分:1)

您无法将Rust程序与OpenSSL的所有功能交叉编译,因为某些版本的OpenSSL不支持(以Vendored为特色),后者有助于交叉编译。因此,您可以使用支持此功能的OpenSSL版本,例如openssl = { version = "0.10", features = ["vendored"] }