我开始学习Rust编程语言,并使用Linux。我想用这种语言构建一个跨平台的应用程序。
这个问题可能与锈蚀语言无关,但无论如何,我是如何做到的呢?我对构建一个"Hello“跨平台应用程序以及更复杂的应用程序感兴趣。我只需要想个办法。
那我该怎么办?
更新
我想要做的是能够在3个不同的平台上运行一个程序,而不需要更改源代码。我必须为每个平台从源构建一个新的二进制文件吗?就像我在C里能做的一样
发布于 2013-07-07 17:47:07
解决这个问题的最好方法是下载伺服的源代码并自己探索。伺服绝对是一个跨平台的代码库,因此它必须解决所有这些问题,无论它们是在构建/配置文件中回答,还是在锈蚀源本身中回答。
发布于 2015-06-20 22:23:09
要在多个平台上运行,您需要为每个平台构建一个可执行文件,@huon评论道。
对于锈病来说,这是相当简单的。你用"--target=“和rustc告诉它你想要构建什么。同样的旗子也适用于货物。
例如,这为ARM目标构建:
cargo build --target=arm-unknown-linux-gnueabihf
有关目标的更多信息,请参见锈蚀柔性目标规格。
然而,锈病并没有随为ARM编写的std Crate (截至2015年6月)一起发布。如果您的目标是这种情况,那么您首先需要自己为目标编译std容器,这包括从源代码编译Rust编译器,并指定该构建的目标!
有关信息,大部分信息是从:https://github.com/japaric/ruststrap/blob/master/1-how-to-cross-compile.md复制的。
下面的说明是给gcc的,所以如果你没有这个,你需要安装它。您还需要相应的交叉编译器工具,因此对于gcc:
sudo apt-get install gcc-arm-linux-gnueabihf
为ARM编写锈蚀std纸箱
下面的示例假设您已经安装了当前的Rust Nightly,所以我们将只获取源代码并编译ARM。如果您正在使用不同版本的编译器,则需要获得该版本,以确保您的ARM库与用于构建项目的编译器版本相匹配。
mkdir ~/toolchains
cd ~/toolchains
git clone https://github.com/rust-lang/rust.git
cd rust
git update为手臂制造铁锈
cd ~/toolchains/rust
./configure --target=arm-unknown-linux-gnueabihf,x86_64-unknown-linux-gnu
make -j4
sudo make install注意"-j4“至少需要8GB内存,所以如果您遇到了上述问题,请尝试"make”代替。
在本机rustc构建中安装ARM rustc库
sudo ln -s $HOME/src/rust/arm-unknown-linux-gnueabihf /usr/lib/rustlib/arm-unknown-linux-gnueabihf创建hello.rs,包含:
pub fn main() {
println!("Hello, world!");
}编译hello.rs,并告诉rustc交叉编译器的名称(必须在您的路径中):
rustc -C linker=arm-linux-gnueabihf-gcc-4.9 --target=arm-unknown-linux-gnueabihf hello.rs
检查生成的二进制文件是否真的是ARM二进制文件:$ file hello hello: ELF 32位LSB共享对象,ARM,EABI5版本1 (SYSV),(.)
成功:
检查:二进制文件应该在ARM设备上工作。
$ scp hello me@arm:~
$ ssh me@arm ./hello
Hello, world!我也用它来构建一个Rust项目,并将其与一个单独的C库连接起来。关于如何动态或静态地执行此操作的说明类似于上面的说明,在一个单独的帖子中,但是我已经使用了我的链接配额!
发布于 2013-07-08 23:14:03
看起来生锈编译器可能还没有准备好为windows构建独立的二进制文件(请参阅windows部分这里),所以这可能还不能完成。
对于posix系统,它主要应该只是工作,除非您试图做GUI内容。
https://stackoverflow.com/questions/17514598
复制相似问题