Linux下Premake5生成Makefile的头文件路径错误求助
问题排查与解决方案
核心原因
你遇到的问题是sudo执行make时,相对路径解析失效或权限不足:
- Premake生成的Makefile里的头文件路径是相对路径
../../../llvm-project/build/include,该路径基于你执行premake5时的工作目录(dev/projects/sigma/)生成。 - 但
sudo执行时,要么工作目录被改变导致相对路径指向错误;要么root用户没有访问llvm头文件目录的权限。
解决步骤
1. 优先不用sudo编译
编译过程通常不需要root权限,直接执行:
make
如果提示权限错误,检查compiler目录的所有者:
ls -ld compiler
若所有者是root,切换回你的普通用户:
sudo chown -R $USER:$USER compiler
之后再执行make即可。
2. 必须用sudo时,指定工作目录
用-C参数让make切换到项目根目录执行,确保相对路径正确解析:
sudo -E make -C /home/goubermouche/dev/projects/sigma/
3. 改用绝对路径规避相对路径问题
修改premake5.lua中的头文件路径为绝对路径,彻底避免相对路径解析误差:
includedirs { "compiler/source", "/home/goubermouche/dev/llvm-project/build/include" }
执行以下命令重新生成Makefile后再编译:
premake5 gmake make
4. 验证并修复llvm目录权限
确认root用户能访问llvm头文件目录:
sudo ls /home/goubermouche/dev/llvm-project/build/include/llvm/IR/IRBuilder.h
若提示权限拒绝,开放目录读权限:
sudo chmod -R o+r /home/goubermouche/dev/llvm-project/build/include
内容的提问来源于stack exchange,提问作者Goubermouche
相关产品推荐
相关产品推荐

