是否有可能有两个带有共享库的 g++ 可执行文件?

是否有可能有两个带有共享库的 g++ 可执行文件?

听起来可能有点奇怪,但我确实想要两个 g++ 可执行文件。一个位于普通的 /usr/bin/g++ 中,目前运行良好。另一个位于受 apparmor 保护的 /sandbox/g++ 下。但是,当我将 g++(不是符号链接,原始可执行文件 g++-4.6)复制到 /sandbox/g++ 时,它无法执行,并出现以下错误:

g++-4.6: error trying to exec 'cc1plus': execvp: No such file or directory

我如何将其设置为使用与普通 g++ 相同的路径/库?我在网上搜索到上述错误的常见答案是重新安装 g++,但我的 g++ 运行良好,我只是希望这个也能同时运行。

谢谢您的任何建议!

编辑 :

在 bashrc 中添加几条 PATH 规则后,可以找到 cc1plus,但所有包含文件的路径都乱了。我想我会按照建议在本地构建源文件,看看如何配置它。

答案1

尝试这个:

cd ~
cp /usr/bin/g++ gx
touch x.cpp
strace ./gx -o x x.cpp 2>xlog

它失败并显示相同的错误消息,并且在 xlog 中您可以看到 g++ 期望在相对目录中找到 cc1plus ../lib/etc。这与 apparmor 无关。

现在,如果您想自己从源代码构建它,可能有一些配置设置可用于让 g++ 在其他地方查找 cc1plus,但除了该选项之外,我会说 g++ 必须从其正常安装的目录中运行。g++将要从其正常目录中的自身副本运行,当然是重命名的。我认为你可以将副本置于 apparmor 之下,如果这能让你感到高兴的话。

相关内容