Ошибка при загрузке спецификации цели: не удалось найти спецификацию для цели

Я следую этому уроку о том, как сделать ОСНОВНУЮ ОСНОВНУЮ операционную систему в Rust. Это мое текущее состояние:

Cargo.toml

[package]
name = "blog_os"
version = "0.1.0"
authors = ["Philipp Oppermann <dev@phil-opp.com>"]   # Here I used my own details

[lib]
crate-type = ["staticlib"]

SRC / lib.rs

#![feature(lang_items)]
#![no_std]

#[no_mangle]
pub extern fn rust_main() {}

#[lang = "eh_personality"] extern fn eh_personality() {}
#[lang = "panic_fmt"] #[no_mangle] pub extern fn panic_fmt() -> ! {loop{}}

x86_64-blog_os.json

{
  "llvm-target": "x86_64-unknown-none",
  "data-layout": "e-m:e-i64:64-f80:128-n8:16:32:64-S128",
  "linker-flavor": "gcc",
  "target-endian": "little",
  "target-pointer-width": "64",
  "target-c-int-width": "32",
  "arch": "x86_64",
  "os": "none",
  "disable-redzone": true,
  "features": "-mmx,-sse,+soft-float"
}

Вот Makefile.


Если вы прокрутите вниз до раздела " Исправление ошибок компоновщика " в учебнике, нас попросят добавить следующие строки в наш Cargo.toml:

[dependencies]
rlibc = "1.0"

Затем укажите внешний ящик в lib.rs (после #![no_std]):

extern crate rlibc;

Когда я бегу make run в терминале я получаю следующее сообщение об ошибке:

error: Error loading specification: Could not find specification for target "x86_64-blog_os" 

error: Could not compile 'rlibc'

Мы ожидаем получить ошибку... только не эту. Пример в разделе " Исправление ошибок компоновщика " дает представление о том типе ошибки, который нам следует ожидать.

Что может быть не так? Я искал везде в Google без решения.

1 ответ

Решение

У меня такая же проблема. Похоже, что эти проблемы в Xargo и Cargo предполагают наличие ошибки в расположении целевых спецификаций:

настройка RUST_TARGET_PATH=pwd перед вызовом xargo исправил проблему для меня. Вызов в данном Makefile будет выглядеть следующим образом:

@RUST_TARGET_PATH=$(shell pwd) xargo build --target $(target)
Другие вопросы по тегам