【问题标题】:gcc error trying to exec 'cc1': execvp: No such file or directory when running with non-root user尝试执行'cc1'的gcc错误:execvp:以非root用户运行时没有这样的文件或目录
【发布时间】:2015-08-01 08:55:48
【问题描述】:

我看到同一个问题被问了很多次,但我的问题不同。

我在 ubuntu 14.04 上安装了 gcc,它在 root 用户下运行良好。 当我尝试使用非 root 用户编译时,它会抛出

错误 gcc: 尝试执行 'cc1' 时出错: execvp: 没有这样的文件或 目录

一旦我用root用户编译文件,非root用户可以正常执行文件,但无法编译文件。

我怀疑文件权限有问题,我检查了 cc1 的权限,非 root 用户对文件有执行权限。

【问题讨论】:

  • 运行gcc时抛出的错误信息在标题中给出。我已经解释了文件'cc1'存在并且用户对该文件具有权限。请告诉我您需要什么详细信息。
  • 您可能想要 strace 编译并查看系统在寻找 cc1: strace gcc -c foo.c 2>&1 | grep cc1 时遇到的确切问题
  • 你是如何安装 gcc 的?您正在运行的产生此错误的命令是什么? gcc -v 透露了什么?请检查您实际运行的是哪个 gcc 二进制文件,以防您以某种方式在不同位置安装了不同的 gcc 版本。
  • 另外,GCC 的 -v 选项可能会有所帮助。
  • 您可能没有build-essential。尝试安装它:sudo apt-get install build-essential

标签: c++ c ubuntu gcc g++


【解决方案1】:

第一种方式:

在root账号下使用命令:

哪个gcc

哪个cc1

ls -l $上一条命令的输出

它将显示cc1 和gcc 的位置以及cc1 的权限
检查您是否拥有cc1 文件的适当权限

然后在“普通”用户下:

哪个gcc

which gcc 的输出应该与 root 的输出相同。

如果正确且gcc 的路径与root 下的路径相同,则将PATH 添加到cc1 以供用户使用。

第二种方式:

root 帐号下:

gcc -v hello_world.c 2>&1 | grep cc1

并在“常规”帐户下执行相同操作。

它将显示用于编译的真实命令。

比较它们并检查权限和PATH,就像第一种方式


添加路径使用:export PATH=$PATH:$add_new_path_to_folder_here

【讨论】:

    【解决方案2】:

    在我的例子中,这个错误是在尝试在 Ubuntu 上编译更新版本的 ffi、nokogiri 和其他 gem 时发生的。 gcc -v 透露我使用的是 gcc 和 g++ 4.8。

    解决方法是将我的 gcc/g++ 符号链接切换为使用 4.9 而不是 4.8。

    $ which gcc 
    $ ls -ld /usr/local/bin/gcc
    $ sudo rm /usr/local/bin/gcc
    $ sudo ln -s /usr/bin/gcc-4.9 /usr/local/bin/gcc
    $ ls -ld /usr/local/bin/gcc
    

    重复 g++。

    【讨论】:

      猜你喜欢
      • 2012-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-20
      • 1970-01-01
      • 2017-05-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多