లింక్ sysroot మాన్యువల్ నియంత్రణ (-C link-sysroot)
wavecలో లింక్ ఫేజ్ sysrootని స్పష్టంగా ఎలా నియంత్రించాలో ఈ పత్రం వివరిస్తుంది.
ప్రధాన సూత్రాలు:
--sysroot=<path>: కంపైల్ ఫేజ్ (క్లాంగ్-c) sysroot-C link-sysroot=<path>: లింక ర్ sysroot
మరో మాటలో చెప్పాలంటే, కంపైలేషన్ మరియు లింకింగ్ కోసం sysroot విడిగా నిర్వహించబడుతుంది.
1. ఇది ఎందుకు అవసరం?
క్రాస్ లింక్లో -C linker=<path>ని ఉపయోగిస్తున్నప్పుడు, మీరు తరచుగా లింక్ డ్రైవర్ (ఉదా. aarch64-linux-gnu-gcc) ద్వారా సూచించబడిన రన్టైమ్ పాత్ (crt1.o, libc, libm)ని ప్రత్యేకంగా పేర్కొనాలి.
ఈ సమయంలో, లింక్ sysroot స్వయంచాలకంగా తీసివేయబడదు, కానీ CLIలో స్పష్టంగా పాస్ అయ్యేలా రూపొందించబడింది.
2. ఎంపిక నిర్వచనం
2.1 -C link-sysroot=<path>
--sysroot=<path>ని లింక్ దశలోకి ఇంజెక్ట్ చేయండి.
wavec -C link-sysroot=/path/to/sysroot ...
అంతర్గతంగా ఇది -C link-arg=--sysroot=<path> వలె అదే అర్థాన్ని కలిగి ఉంటుంది.
2.2 -C link-arg=--sysroot=<path>
ఇప్పటికే ఉన్న ముడి లింక్ ఆర్గ్యుమెంట్ పద్ధతికి ఇప్పటికీ మద్దతు ఉంది.
wavec -C link-arg=--sysroot=/path/to/sysroot ...
3. ధృవీకరణ నియమాలు
కింది షరతులు ఏకకాలంలో నెరవేరినట్లయితే, లింక్ దశ అవసరమయ్యే బిల్డ్ వినియోగ లోపంతో ముగుస్తుంది:
-C linker=...ఉపయోగించండి--sysroot=<path>ని ఉపయోగించండి- లింక్ sysroot (
-C link-sysrootలేదా-C link-arg=--sysroot=...) పేర్కొనబడలేదు
ఉదాహరణ దోష సందేశం:
when using -C linker=..., --sysroot=<path> is compile-stage only; pass linker sysroot explicitly with -C link-sysroot=<path> (or -C link-arg=--sysroot=<path>)
4. ఉపయోగం యొక్క ఉదాహరణ
4.1 AArch64 Linux క్రాస్ లింక్
wavec \
-C linker=aarch64-linux-gnu-gcc \
--sysroot=/usr/aarch64-redhat-linux/sys-root/fc43 \
-C link-sysroot=/usr/aarch64-redhat-linux/sys-root/fc43 \
build test/test93.wave \
--target aarch64-unknown-linux-gnu \
--emit=bin \
-o /tmp/test93-aarch64.bin