我是trying to follow this blog,但是在Windows和最新的Rust上。在我看来,Rust经常更改这种方式的正确方法,因此我希望能够进行Windows的最新适应。
我安装了gcc-arm-embedded。
我无法手动交叉编译libcore来验证部分成功,但是后来我改用推荐的xargo
,其功能(我读到)最终将被包含在Cargo中。虽然我不太了解其中的任何内容,但我还是希望能够进入可以编写/运行代码的部分,然后也许我可以重新更好地理解编译。
使用japaric's awesome help,我能够获得针对“ aarch64”的目标版本,以生成.o文件(as of this particular commit)。
这部分似乎可以验证:
$ file target/aarch64-raspi3-none-elf/release/deps/rust_rasp-ed0c2377e0a7df81.o
target/aarch64-raspi3-none-elf/release/deps/rust_rasp-ed0c2377e0a7df81.o: ELF 64-bit LSB relocatable, ARM aarch64, version 1 (SYSV), not stripped
当我尝试使用GNU Arm Embedded Toolchain链接器时,我得到:
$ arm-none-eabi-gcc -O0 -mfpu=vfp -mfloat-abi=hard -march=armv6zk -mtune=arm1176jzf-s -nostartfiles target/aarch64-raspi3-none-elf/release/deps/rust_rasp-ed0c2377e0a7df81.o -o kernel.elf target/aarch64-raspi3-none-elf/release/deps/rust_rasp-ed0c2377e0a7df81.o: file not recognized: File format not recognized
collect2.exe: error: ld returned 1 exit status
#rust IRC聊天室帮助告诉我rpi3是aarch64,而不是arm,因此我需要找到一个aarch64链接程序...
答案 0 :(得分:0)
我认为它正在工作!我学到的东西:
xargo
很好xargo
不在乎工具链rustup的默认设置,因为我不是要求它为我链接,而是由它自己选择工具链对于想自己做的人,请参见https://github.com/JasonKleban/rust-rasp。没那么复杂!
我打算眨眼以确认我们确实拥有控制权为主导的机上活动,但是在rpi3上看起来有点复杂(请参阅我的自述文件,如果仍然适用)