Ошибка при загрузке спецификации цели: не удалось найти спецификацию для цели
Я следую этому уроку о том, как сделать ОСНОВНУЮ ОСНОВНУЮ операционную систему в 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)