在 Debian 上用 gcc 编译时提示“权限错误(Permission denied)”,通常不是 gcc 本身没权限,而是它要写/读的某个文件或目录没权限。常见原因和排查方法如下:
例如:
gcc test.c -o /usr/bin/test
或当前目录不可写:
gcc test.c
如果当前目录你没有写权限,就会报:
permission denied
✅ 解决:
gcc test.c -o test
# 或指定你有写权限的目录
gcc test.c -o ~/test
gcc test.c
如果 test.c 不可读:
test.c: Permission denied
✅ 检查:
ls -l test.c
✅ 修复:
chmod +r test.c
比如:
/mnt/xxx 是 ro✅ 解决:
换到可写目录(如 ~/ 或 /tmp)
gcc 会用:
/tmp
如果 /tmp 权限异常:
ls -ld /tmp
应为:
drwxrwxrwt
✅ 修复:
sudo chmod 1777 /tmp
比如:
sudo gcc test.c
但 test.c 属于普通用户且没读权限
✅ 解决:
sudo chmod +r test.c
ls -l $(which gcc)
如果没执行权限:
sudo chmod +x /usr/bin/gcc
# 1. 当前目录可写?
pwd
touch test_write && rm test_write
# 2. 源文件可读?
ls -l test.c
# 3. /tmp 正常?
ls -ld /tmp
# 4. gcc 正常?
gcc --version
你可以把完整的报错信息贴出来,例如:
gcc: error: test.c: Permission denied
或
collect2: error: cannot find 'ld': Permission denied
我可以直接帮你定位是哪一步出的问题。