zan*_*der 6 cross-compiling rust
让Rust连接到OS X上针对i686-unknown-linux-gnu的核心库时遇到一些麻烦:
MacBook:rustboot alex$ make
rustc -O --target i686-unknown-linux-gnu --crate-type lib -o main.o --emit obj main.rs
main.rs:5:1: 5:19 error: can't find crate for `core`
main.rs:5 extern crate core;
^~~~~~~~~~~~~~~~~~
error: aborting due to previous error
make: *** [main.o] Error 101
Run Code Online (Sandbox Code Playgroud)
main.rs看起来像这样:
#![no_std]
#![allow(ctypes)]
#![feature(lang_items)]
extern crate core;
use core::prelude::*;
#[no_mangle]
#[no_split_stack]
pub fn main() {
}
Run Code Online (Sandbox Code Playgroud)
我怀疑是因为我试图链接到i686-unknown-linux-gnu但是该平台不存在核心库.如何为该平台安装或构建库?
huo*_*uon 12
这是因为您所定位的平台不存在核心库.有几种方法可以获得它:
rustup target add i686-unknown-gnu-linux应该做的伎俩core-nightlyCargo.tomlcargo build --target=...src/libcoreCargo.tomlpathlib/rustlib/某处自动搜索(~/.multirust/toolchains/nightly-2015-01-18/lib/rustlib)或在任何地方提取目录并将-L标志传递给编译器(我不是100%肯定的-L尽管如此,旗帜应指向的确切位置)../configure --target=$yourtarget然后make应该构建一个可以在当前计算机上运行的编译器,还可以创建在所需目标上运行的二进制文件货运路线绝对是目前最容易的.交叉编译的故事将来肯定会变得更容易,例如,让multirust为第三种可能性做所有复杂的事情.但是,第三种和第四种方式都依赖于能够std为您的平台构建,这似乎不太适合内核工作.
(顺便说一句,rlibc crate对内核工作也很有用/必要.)
| 归档时间: |
|
| 查看次数: |
2488 次 |
| 最近记录: |