首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Xargo从特定源编译“核心”

使用Xargo从特定源编译“核心”
EN

Stack Overflow用户
提问于 2017-05-18 12:17:35
回答 2查看 639关注 0票数 1

基于这一评论,应该可以使用Xargo来管理特定目标的自定义core机箱的安装。我尝试了下面的方法,让它使用一个除了core之外没有其他依赖项的机箱

Cargo.toml:没有列出依赖项

代码语言:javascript
复制
[package]
name = "chip8-engine"
version = "0.1.0"
authors = ["Dr. ERDI Gergo <gergo@erdi.hu>"]

[dependencies]

Xargo.toml:我列出的core的特定来源

代码语言:javascript
复制
[target.avr-atmel-none.dependencies]
core = { git = "https://github.com/gergoerdi/rust-avr-libcore-mini", rev = "adda44aa91ac517aab6915447592ee4cad26564c" }

然而,通过xargo build构建就像我只是在使用cargo一样失败了

代码语言:javascript
复制
$ ~/.cargo/bin/xargo build --release -v --target avr-atmel-none
+ "rustc" "--print" "sysroot"
+ "cargo" "build" "--release" "-v" "--target" "avr-atmel-none"
   Compiling chip8-engine v0.1.0 (file:///home/cactus/prog/rust/avr/chip8-engine-avr)
     Running `stage1/bin/rustc --crate-name chip8_engine src/lib.rs --crate-type lib -C opt-level=3 -C metadata=231962fc6e1bee04 -C extra-filename=-231962fc6e1bee04 --out-dir /home/cactus/prog/rust/avr/chip8-engine-avr/target/avr-atmel-none/release/deps --emit=dep-info,link --target avr-atmel-none -L dependency=/home/cactus/prog/rust/avr/chip8-engine-avr/target/avr-atmel-none/release/deps -L dependency=/home/cactus/prog/rust/avr/chip8-engine-avr/target/release/deps`
error[E0463]: can't find crate for `core`
  |
  = note: the `avr-atmel-none` target may not be installed

error: aborting due to previous error

error: Could not compile `chip8-engine`.

Caused by:
  process didn't exit successfully: `stage1/bin/rustc --crate-name chip8_engine src/lib.rs --crate-type lib -C opt-level=3 -C metadata=231962fc6e1bee04 -C extra-filename=-231962fc6e1bee04 --out-dir /home/cactus/prog/rust/avr/chip8-engine-avr/target/avr-atmel-none/release/deps --emit=dep-info,link --target avr-atmel-none -L dependency=/home/cactus/prog/rust/avr/chip8-engine-avr/target/avr-atmel-none/release/deps -L dependency=/home/cactus/prog/rust/avr/chip8-engine-avr/target/release/deps` (exit code: 101)

请注意,没有任何指示甚至试图Git流量。

相反,如果我将我的core = { git = ...}行放在Cargo.toml中而不是Xargo.toml中,这就是香草core = { git = ...}的输出,它的工作原理是预期的:

代码语言:javascript
复制
$ cargo build -v --target=avr-atmel-none --release
   Compiling core v0.1.0 (https://github.com/gergoerdi/rust-avr-libcore-mini?rev=adda44aa91ac517aab6915447592ee4cad26564c#adda44aa)
     Running `stage1/bin/rustc --crate-name core /home/cactus/.cargo/git/checkouts/rust-avr-libcore-mini-37e279d93a70b45a/adda44a/src/lib.rs --crate-type lib -C opt-level=3 -C metadata=47f38a1987c5b284 -C extra-filename=-47f38a1987c5b284 --out-dir /home/cactus/prog/rust/avr/chip8-engine-avr/target/avr-atmel-none/release/deps --emit=dep-info,link --target avr-atmel-none -L dependency=/home/cactus/prog/rust/avr/chip8-engine-avr/target/avr-atmel-none/release/deps -L dependency=/home/cactus/prog/rust/avr/chip8-engine-avr/target/release/deps --cap-lints allow`
   Compiling chip8-engine v0.1.0 (file:///home/cactus/prog/rust/avr/chip8-engine-avr)
     Running `stage1/bin/rustc --crate-name chip8_engine src/lib.rs --crate-type lib -C opt-level=3 -C metadata=231962fc6e1bee04 -C extra-filename=-231962fc6e1bee04 --out-dir /home/cactus/prog/rust/avr/chip8-engine-avr/target/avr-atmel-none/release/deps --emit=dep-info,link --target avr-atmel-none -L dependency=/home/cactus/prog/rust/avr/chip8-engine-avr/target/avr-atmel-none/release/deps -L dependency=/home/cactus/prog/rust/avr/chip8-engine-avr/target/release/deps --extern core=/home/cactus/prog/rust/avr/chip8-engine-avr/target/avr-atmel-none/release/deps/libcore-47f38a1987c5b284.rlib`
    Finished release [optimized] target(s) in 15.21 secs
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-04 02:01:13

您可能需要安装夜间锈蚀工具链,以允许xargo为您的目标构建一些支持代码。我不得不做一些类似的事情,让嵌入式ARM设置与xargo一起工作。在嵌入目标的目录中这样做:

代码语言:javascript
复制
$ rustup install nightly
$ rustup component add rust-src  # needed for xargo buildup of the target
$ rustup override set nightly    # sets the rustc version to run for this dir
$ xargo build
票数 1
EN

Stack Overflow用户

发布于 2017-06-04 04:32:54

结果是目前不支持Xargo。,所以我想使用的任何rustc都需要作为rustup link安装。请引用上述票:

在这个过程中,您可以使用rustup创建指向stage1 rustc的自定义工具链。这是众所周知的工作。 $ cd /home/cactus/prog/rust/rust-avr/build/build/x86_64-unknown-linux-gnu/stage1 $ rustup工具链链接avr-工具链。$ rustup默认avr-工具链$ rustc -V #应该说是dev通道

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44047555

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档