Estou tentando especificar um runner personalizado para cargo, mas ele simplesmente se recusa a usá-lo. Tentei usar meu próprio target triple after personalizado target.
e tentei usar a opção cfg que você vê abaixo:
[target.'cfg(all(target_os = "none"))']
runner = "qemu-system-riscv64 -machine virt -kernel "
mas em ambos os casos, ele diz que tenho uma chave de manifesto não utilizada ao compilar:
warning: unused manifest key: target.cfg(all(target_os = "none")).runner
Ao usá-lo, cargo run
ele sempre executa o binário normal em vez do meu executor personalizado.
Meu caso é especial, pois estou usando o config.toml
arquivo na .cargo
pasta para especificar meu triplo alvo personalizado:
[unstable]
build-std-features = ["compiler-builtins-mem"]
build-std = ["core", "compiler_builtins"]
[build]
target = "compilation_targets/riscv-unknown-kadrix.json"
Como este é um kernel, ele tem algumas coisas especiais:
- Não usa a biblioteca padrão
- Não usa uma função principal, seu ponto de entrada é
_start
.start
Usa uma seção personalizada para a_start
função em vez de.text
- Usa uma estrutura de teste personalizada
Não tenho certeza se algum desses pontos é relevante, mas é melhor prevenir do que remediar. O código está aqui se você quiser inspecionar mais.