首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >make: g++:CXX = g++而不是CXX = /usr/bin/g++拒绝的权限

make: g++:CXX = g++而不是CXX = /usr/bin/g++拒绝的权限
EN

Stack Overflow用户
提问于 2022-05-11 19:08:10
回答 1查看 290关注 0票数 0

最近,我意识到大多数需要g++并使用Makefile的包都会使用相同的错误消息构建失败:make: g++ Permission denied

我发现这是因为CXX = g++正常工作,我不知道为什么在我的系统中它是不同的。

我用两个Makefile测试。第一项:

代码语言:javascript
复制
CXX=g++

all:
    which $(CXX)
    $(CXX) -v

将导致

代码语言:javascript
复制
which g++
/usr/bin/g++
g++ -v
make: g++: Permission denied
make: *** [Makefile:5: all] Error 127

第二个Makefile:

代码语言:javascript
复制
CXX=/usr/bin/g++

all:
    which $(CXX)
    $(CXX) -v

会有正确的结果

代码语言:javascript
复制
which /usr/bin/g++
/usr/bin/g++
/usr/bin/g++ -v
Using built-in specs.
COLLECT_GCC=/usr/bin/g++
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: /build/gcc/src/gcc/configure --enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++ --enable-bootstrap --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.archlinux.org/ --with-linker-hash-style=gnu --with-system-zlib --enable-__cxa_atexit --enable-cet=auto --enable-checking=release --enable-clocale=gnu --enable-default-pie --enable-default-ssp --enable-gnu-indirect-function --enable-gnu-unique-object --enable-linker-build-id --enable-lto --enable-multilib --enable-plugin --enable-shared --enable-threads=posix --disable-libssp --disable-libstdcxx-pch --disable-werror --with-build-config=bootstrap-lto --enable-link-serialization=1
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 12.1.0 (GCC) 

在第一个Makefile中,which $(CXX)仍然导致/usr/bin/g++,这仍然是正确的,所以我不明白这里的问题是什么。

我的系统信息。我正在使用Arch,GCC在Makefile上工作得很好,这就是为什么我现在只知道g++有这个问题,所以我不知道这个问题是什么时候开始的。

请帮帮忙。谢谢。

EN

回答 1

Stack Overflow用户

发布于 2022-05-11 21:14:33

这几乎肯定是因为您的$PATH上的某个目录中有一个名为g++的目录,并且这个目录出现在/usr/bin之前。

因此,如果您从第一个目录开始运行ls -ld <dir>/g++$PATH中的每个目录<dir>运行,其中一个将是一个目录:

代码语言:javascript
复制
drwxr-xr-x ...   <dir>/g++
^ directory!!

由于gnulib正在使用的gnulib库中有一个bug,它将处理路径上找到的目录与shell处理它的方式不同;它不会跳过它,就像shell会跳过它一样,而是尝试“运行”它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72206393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档