Windows下用Cygwin交叉编译LLVM至类Linux x86架构时构建错误求助
解决LLVM交叉编译中llvm-min-tblgen.exe目标缺失的问题
你遇到的错误信息:
make[3]: *** No rule to make target 'NATIVE/bin/llvm-min-tblgen.exe', needed by 'include/llvm/TargetParser/RISCVTargetParserDef.inc'. Stop. make[2]: *** [CMakeFiles/Makefile2:6501: include/llvm/TargetParser/CMakeFiles/RISCVTargetParserTableGen.dir/all] Error 2 make[1]: *** [CMakeFiles/Makefile2:15989: tools/llc/CMakeFiles/llc.dir/rule] Error 2 make: *** [Makefile:4648: llc] Error 2
统一环境工具链:放弃混合使用Windows版CMake和Cygwin环境,改用纯Cygwin工具链。先卸载Windows版CMake,在Cygwin包管理器中安装
cmake、make、gcc等编译依赖,重新初始化编译环境。路径问题通常是因为Windows版CMake生成的路径格式(如盘符、反斜杠)和Cygwin的POSIX路径不兼容,纯Cygwin工具链能避免这类冲突。指定原生工具链路径:如果必须保留Windows版CMake,在执行CMake配置时,明确指定原生编译工具的路径。添加
-DLLVM_TABLEGEN=<cygwin路径下的llvm-tblgen>参数,比如-DLLVM_TABLEGEN=/usr/bin/llvm-tblgen,确保CMake能找到正确的tblgen工具生成所需的.inc文件。检查编译目录权限与路径:确保编译目录的路径不含中文、空格或特殊字符,Cygwin对这类路径的兼容性较差。同时验证
NATIVE/bin目录是否存在,手动创建该目录并赋予读写权限,避免因目录缺失导致make找不到目标文件。强制重新生成Makefile:删除原有的
CMakeCache.txt和build目录,重新执行CMake配置命令。配置时添加-DCMAKE_MAKE_PROGRAM=/usr/bin/make指定Cygwin版make,避免Windows版make(如果存在)造成的兼容性问题。
内容的提问来源于stack exchange,提问作者29_MOHAMMED_ZUHAIB
相关产品推荐
相关产品推荐

