現在、私はRISC-Vを学習しており、RISC-Vツールチェーンを使用しています。私は、例を書いて、オペコードを見るためにコンパイルします。riscv/gcc/ld - リンク先のスクリプトを使用した "未定義のprintfへの参照"
例:
#include <stdio.h> //float.c
int main()
{
float a=1.04;
printf("a=%f\n",a);
return 0;
}
私の手順は次のとおりです。
1. riscv64-unknown-elf-gcc -S float.c *//generate assembly code*
2. riscv64-unknown-elf-as float.s -o float.o *//generate obj file*
3. riscv64-unknown-elf-ld -T elf64lriscv1.x float.o *//use own script to link, -T is using other script*
し、その後、それは「float.cを:(表示されるテキスト+ 0x50を):未定義の参照`printf '
私は試してみました
-lc
パラメータを追加しますが、機能しません。未定義のメッセージが表示されます。
私のldスクリプト
OUTPUT_FORMAT("elf64-littleriscv", "elf64-littleriscv","elf64-littleriscv")
OUTPUT_ARCH(riscv)
ENTRY(_start)
SEARCH_DIR("/path/to/install/riscv/toolchain/riscv64-unknow-elf/lib");
/*MEMORY{ //for my embedded allocation
flash : org = 0x0, l = 0x10000
ram : org= 0x10000, l = 512
}*/
SECTIONS{
_start =0x10000;
.text :
{
*(.text)
}
.bss :
{
*(.bss)
*(.sbss)
}}
はまた、私は、このコマンドのように、デフォルトのスクリプトを使用しようとしている: ....してください
$ riscv-unknown-elf-ld float.o -o float
が、それは同じ結果です助けて!
よろしくお願いいたします。
RISC-Vだけでなくはるかに多くを学ぶ必要があります。 http://norvig.com/21-days.html –
を参照してください。なぜあなたのRISCV-VでLinuxを使用しないのですか?もし、Linuxがそのプラットフォーム上で完全に成熟していなくても、もっと簡単になるかもしれません... –
私はLinux上でRISCV VMを手に入れました.CCSを使ってMCU(TI 320F28335)に移りました。ツールチェーンはLinux上にあります)、MCUにRISCV命令ロードを与えて実行してください –