从64位arch linux为raspberry pi`armv7 unknown linux gnueabihf`编译Rust程序
我想从我的笔记本电脑上为我的raspberry pi编译一个Rust程序。我在升级pi上的C版本时遇到问题,无法安装rust从那里编译它 我遵循了为rpi交叉编译rust的教程。我可以用这种方式编译简单的程序,没有问题,但是我想要编译的程序使用sqlite和openssl,这就是我遇到问题的地方 我已经安装了从64位arch linux为raspberry pi`armv7 unknown linux gnueabihf`编译Rust程序,linux,rust,raspberry-pi,cross-compiling,rust-cargo,Linux,Rust,Raspberry Pi,Cross Compiling,Rust Cargo,我想从我的笔记本电脑上为我的raspberry pi编译一个Rust程序。我在升级pi上的C版本时遇到问题,无法安装rust从那里编译它 我遵循了为rpi交叉编译rust的教程。我可以用这种方式编译简单的程序,没有问题,但是我想要编译的程序使用sqlite和openssl,这就是我遇到问题的地方 我已经安装了lib32dbus,lib32openssl和lib32sqlite。执行导出OPENSSL\u LIB\u DIR=/usr/lib32和导出OPENSSL\u INCLUDE\u DIR
lib32dbus
,lib32openssl
和lib32sqlite
。执行导出OPENSSL\u LIB\u DIR=/usr/lib32
和导出OPENSSL\u INCLUDE\u 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
完全错误
是否有某种SQLITE\u LIB\u DIR
env变量可以设置?如果没有,如何将链接器指向正确的版本?谢谢
编辑:我现在已经下载并交叉编译了用于arm linux的libsqlite3。现在我只需要知道如何将链接器指向arm版本。您不能用OpenSSL的每个功能交叉编译您的Rust程序,因为某些版本的OpenSSL不支持(作为供应商的功能),这有助于交叉编译。因此,您可以使用支持此功能的OpenSSL版本,如
OpenSSL={version=“0.10”,features=[“vendored”]}
您正在针对本地libsqlite进行链接。您可以自己使用交叉编译器libsqlite3,也可以使用预编译的libsqlite3。交叉编译后,如何将链接器指向它?“如何将链接器指向它…”在C语言中,您通常使用--sysroot
。C编译器将为您调用链接器。sysroot
具有目标所需的所有头和库。我知道车轮是生锈造成的。没有人知道如何在生锈的情况下做同样的事情。当我试图构建一个新的Firefox Geckodriver来修复手臂生锈和货物损坏时。祝你好运。