ここからCHERIエミュレータをインストールしました。協会。
これにより、 risc-v の clang コンパイラを使用でき、拡張された risc-v アーキテクチャ機能を使用できます。
次のエイリアスを定義しました。
alias clang-riscv='~/cheri/output/sdk/bin/clang -g -O2 -target riscv64-unknown-freebsd --sysroot="~/cheri/output/rootfs-riscv64-purecap" -fuse-ld=lld -mno-relax -march=rv64gc -mabi=lp64d -Wall -Wcheri'
alias clang-cap='~/cheri/output/sdk/bin/clang -g -O2 -target riscv64-unknown-freebsd --sysroot="~/cheri/output/rootfs-riscv64-purecap" -fuse-ld=lld -mno-relax -march=rv64gcxcheri -mabi=l64pc128d -Wall -Wcheri'
次のコマンドを実行するとエラーが発生します。
$ clang-riscv print-pointer.c
print-pointer.c:5:10: fatal error: 'stdio.h' file not found
#include <stdio.h>
^~~~~~~~~
1 error generated.
$ clang-cap print-capability.c
print-capability.c:5:10: fatal error: 'stdio.h' file not found
#include <stdio.h>
^~~~~~~~~
1 error generated.
私はディレクトリを確認しましたが、sysroot/usr/include
そこにディレクトリが含まれていますが、stdio.h
リンカがなぜディレクトリを見つけることができないのかわかりません。
sathvik@sathvik-Aspire-A515-51G:~/cheri/output/rootfs-riscv64-purecap/usr/include$ ls
aio.h curses.h fstab.h krb5 math.h parse_time.h rtld_db.h syslog.h
alias.h cuse.h fts.h krb5_asn1.h md4.h parse_units.h runetype.h taclib.h
a.out.h db.h ftw.h krb5_ccapi.h md5.h pathconv.h sched.h tar.h
archive_entry.h der.h gcc krb5_err.h memory.h paths.h scsi_wrap.h tcpd.h
archive.h der-private.h gelf.h krb5.h memstat.h pcap sdp.h teken
ar.h der-protos.h geom krb5-private.h menu.h pcap-bpf.h search.h termcap.h
arpa dev getarg.h krb5-protos.h mixer.h pcap.h security term.h
asn1-common.h devctl.h getopt.h krb5-types.h monetary.h pcap-namedb.h _semaphore.h termios.h
asn1_err.h devdctl glob.h kvm.h mp.h pcap-netmap.h semaphore.h tgmath.h
assert.h devinfo.h grp.h kx509_asn1.h mpool.h pkcs10_asn1.h setjmp.h threads.h
atf-c devstat.h gssapi langinfo.h mqueue.h pkcs12_asn1.h sha224.h timeconv.h
atf-c++ dialog.h gssapi.h lib80211 mtlib.h pkcs8_asn1.h sha256.h time.h
atf-c.h digest_asn1.h hdb_asn1.h lib9p ncurses_dll.h pkcs9_asn1.h sha384.h timers.h
atf-c++.hpp dirent.h hdb_err.h libcasper.h ncurses.h pkinit_asn1.h sha512.h ttyent.h
base64.h dlfcn.h hdb.h libcasper_service.h ndbm.h pmcformat.h sha512t.h uchar.h
bitstring.h dlg_colors.h hdb-protos.h libdwarf.h net pmc.h sha.h ucontext.h
blacklist.h dlg_config.h heim_asn1.h libelf.h net80211 pmclog.h signal.h ufs
Block.h dlg_keys.h heimbase.h libgen.h netconfig.h poll.h skein_freebsd.h ugidfw.h
Block_private.h dpv.h heim_err.h libgeom.h netdb.h printf.h skein.h ulimit.h
bluetooth.h dwarf.h heimntlm.h libgpio.h netgraph private skein_iv.h ulog.h
bsdxml_external.h edit heimntlm-protos.h libipt netgraph.h proc_service.h skein_port.h unctrl.h
bsdxml.h efivar-dp.h heim_threads.h libmilter netinet protocols spawn.h unistd.h
bsm efivar.h hex.h libproc.h netinet6 pthread.h stab.h usb.h
bsnmp elf.h histedit.h libprocstat.h netipsec pthread_np.h statcounters.h usbhid.h
bzlib.h elf-hints.h hx509_err.h librss.h netnatm pwd.h statcounters_md.h utempter.h
c++ err.h hx509.h libufs.h netpfil radlib.h statcounters_md.inc utime.h
calendar.h errno.h hx509-private.h libusb20_desc.h netsmb radlib_vs.h stdalign.h utmpx.h
cam eti.h hx509-protos.h libusb20.h nfs ranlib.h stdarg.h uuid.h
camlib.h execinfo.h iconv.h libusb.h nfsclient rdma stdatomic.h varargs.h
capsicum_helpers.h fcntl.h ieeefp.h libutil.h nfsserver readpassphrase.h stdbool.h vis.h
casper fenv.h ifaddrs.h libxo nlist.h regex.h stddef.h vm
cheri fetch.h infiniband limits.h nl_types.h resolve.h stdint.h wchar.h
cms_asn1.h figpar.h inttypes.h linker_set.h nss.h resolv.h stdio.h wctype.h
com_err.h filecomplete.h iso646.h link.h nsswitch.h res_update.h stdlib.h wind_err.h
compat FlexLexer.h isofs locale.h ntlm_err.h rfc2459_asn1.h stdnoreturn.h wind.h
complex.h float.h jail.h login_cap.h ocsp_asn1.h ripemd.h string.h wordexp.h
com_right.h floatingpoint.h k524_err.h lzma opencsd roken-common.h stringlist.h xdbm.h
cpio.h fmtmsg.h kadm5 lzma.h openssl roken.h string_m.h xlocale
crmf_asn1.h fmtutils.h kafs.h machine opie.h rpc strings.h xlocale.h
crypto fnmatch.h kdc.h magic.h osreldate.h rpcsvc sys ypclnt.h
_ctype.h form.h kdc-protos.h malloc.h panel.h rpoll.h sysdecode.h zconf.h
ctype.h fs kenv.h malloc_np.h parse_bytes
clang
このフラグを使用してコマンドを実行すると、-v
次のようになります。
ignoring nonexistent directory "~/cheri/output/rootfs-riscv64-purecap/usr/include"
フォルダが存在し、すべてのヘッダが含まれています。
このエラーをどのように解決できますか?
答え1
存在しないディレクトリ "~/cheri/output/rootfs-riscv64-purecap/usr/include" 無視
~
ああ、そこに拡張されていないものがあります。変換は、他の場所では機能しないと期待できないシェル機能~
です。エイリアスからに変更してください。/home/username
~
~
/home/yourusername