我开始学习Rust编程语言,我使用Linux.我想使用这种语言构建一个跨平台的应用程序.
问题可能与Rust语言无关,但是,我该怎么做?我有兴趣构建一个"Hello World"跨平台应用程序以及更复杂的应用程序.我只需要了解这个想法.
那我该怎么办?
更新:
我想要做的是能够在不改变源的情况下在3个不同平台上运行程序.我是否必须从源代码为每个平台构建新的二进制文件?就像我在C中所做的那样
the*_*yst 14
要在多个平台上运行,您需要为@ huon-dbauapp注释为每个平台构建一个可执行文件.
Rust非常简单.你使用带有rustc的"--target ="来告诉它你想要构建什么.同一面旗帜适用于Cargo.
例如,这是为ARM目标构建的:
cargo build --target=arm-unknown-linux-gnueabihf
有关目标的更多信息,请参阅Rust Flexible Target Specification.
但是,Rust没有附带为ARM编译的std Crate(截至2015年6月).如果您的目标是这种情况,您首先需要自己编译目标的std Crates,这涉及从源编译Rust编译器,并指定该构建的目标!
有关信息,大部分内容复制自:https://github.com/japaric/ruststrap/blob/master/1-how-to-cross-compile.md
以下说明适用于gcc,因此如果您没有这个,则需要安装它.您还需要相应的交叉编译工具,因此对于gcc:
sudo apt-get install gcc-arm-linux-gnueabihf
以下示例假设您已经安装了当前的Rust Nightly,因此我们只需获取源代码并为ARM编译.如果您使用的是不同版本的编译器,则需要确保ARM库与您用于构建项目的编译器版本相匹配.
mkdir ~/toolchains
cd ~/toolchains
git clone https://github.com/rust-lang/rust.git
cd rust
git update
Run Code Online (Sandbox Code Playgroud)
为ARM构建rustc
cd ~/toolchains/rust
./configure --target=arm-unknown-linux-gnueabihf,x86_64-unknown-linux-gnu
make -j4
sudo make install
Run Code Online (Sandbox Code Playgroud)
注意"-j4"需要至少8GB的RAM,所以如果你遇到上面的问题,请尝试"make".
sudo ln -s $HOME/src/rust/arm-unknown-linux-gnueabihf /usr/lib/rustlib/arm-unknown-linux-gnueabihf
Run Code Online (Sandbox Code Playgroud)
创建包含以下内容的hello.rs:
pub fn main() {
println!("Hello, world!");
}
Run Code Online (Sandbox Code Playgroud)
编译hello.rs,告诉rustc交叉编译器的名称(必须在你的PATH中):
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),(..)
成功!!!:
$ scp hello me@arm:~
$ ssh me@arm ./hello
Hello, world!
Run Code Online (Sandbox Code Playgroud)
我用它来构建和链接Rust项目以及单独的C库.类似于上面有关如何执行此操作的说明,动态或静态是在单独的帖子中,但我已经使用了我的链接配额!
| 归档时间: |
|
| 查看次数: |
10213 次 |
| 最近记录: |