调试错误 "gcc: error: x86_64-linux-gnu-gcc: No such file or directory"

107

我正试图构建: https://github.com/kanzure/nanoengineer

但看起来它在以下位置出现了错误:

gcc -DHAVE_CONFIG_H -I. -I../.. -I/usr/include/python2.7   -std=c99 x86_64-linux-gnu-gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -MT libstructcompare_a-structcompare.o -MD -MP -MF .deps/libstructcompare_a-structcompare.Tpo -c -o libstructcompare_a-structcompare.o `test -f 'structcompare.c' || echo './'`structcompare.c
gcc: error: x86_64-linux-gnu-gcc: No such file or directory

x86_64-linux-gnu-gcc/usr/bin中绝对存在(它是一个符号链接),目标也绝对存在。看起来像是Makefile没有正确生成,也许应该在指定x86_64-linux-gnu-gcc之前传递一个标志?我也不确定指定x86_64-linux-gnu-gcc的目的是什么。

最后,这个Makefile是由configure生成的,所以一旦我们缩小错误的原因范围,我就得找出要修改哪些文件才能修复它。 (我个人更倾向于使用CMake,但当然我没有选择此项目的构建系统。)我的操作系统是Debian。

我尝试了构建这个分支:https://github.com/kanzure/nanoengineer/branches/kirka-updates

如果您能尝试在您的系统上构建这个项目,我将不胜感激!谢谢!


4
你是否已安装了python-dev包? - P̲̳x͓L̳
1
你是如何调用 configure 脚本的?看起来你在 CXXFLAGS 中添加了垃圾或其他东西。x86_64-linux-gnu-gccMakefile 中的哪里出现? - DanielKO
是的,已安装python-dev。我使用“./configure”调用了配置。我在整个449MB(!)源树中使用grep搜索x86_64-linux-gnu-gcc,但没有结果。我还尝试在另一台机器上构建,但最终出现了完全相同的错误。感谢您的帮助。谢谢!! - cat pants
1
翻译:请运行带有-v选项的gcc命令并发布其输出。实际上,发布的命令中出现了错误,即gcc ...options... x86_64-linux-gnu-gcc ..options..,而gcc试图将x86_64-linux-gnu-gcc作为输入文件使用,这是错误的。因此,您应该调试Makefile。 - osgx
2
@AndyG 这就是错误的根源 - 正在运行的命令是 gcc ... x86_64-linux-gnu-gcc ... - gcc 没有将 x86_64-linux-gnu-gcc 参数视为选项/标志等,因此假定它是应该编译的文件。由于没有附加路径,它假定该文件应该在当前目录中,找不到它并产生错误消息。然而,为什么这个命令行会是这样,可能与 configure 或其运行方式有关,或者与 Makefile 有关 - 如上所述的命令是没有意义的。 - twalberg
显示剩余6条评论
10个回答

121

在付出一定的努力后,我成功地让它在Ubuntu 12.04 x86和Debian 7.4 x86_64上构建。下面我写了一份指南,请您尝试按照指南操作,看是否能解决问题?

如果不能,请告诉我你遇到了哪些问题。

安装常见依赖项

sudo apt-get install build-essential autoconf libtool pkg-config python-opengl python-imaging python-pyrex python-pyside.qtopengl idle-python2.7 qt4-dev-tools qt4-designer libqtgui4 libqtcore4 libqt4-xml libqt4-test libqt4-script libqt4-network libqt4-dbus python-qt4 python-qt4-gl libgle3 python-dev

安装NumArray 1.5.2版本

wget http://goo.gl/6gL0q3 -O numarray-1.5.2.tgz
tar xfvz numarray-1.5.2.tgz
cd numarray-1.5.2
sudo python setup.py install

安装 Numeric 23.8

wget http://goo.gl/PxaHFW -O numeric-23.8.tgz
tar xfvz numeric-23.8.tgz
cd Numeric-23.8
sudo python setup.py install

安装 HDF5 1.6.5

wget ftp://ftp.hdfgroup.org/HDF5/releases/hdf5-1.6/hdf5-1.6.5.tar.gz
tar xfvz hdf5-1.6.5.tar.gz
cd hdf5-1.6.5
./configure --prefix=/usr/local
sudo make 
sudo make install

安装Nanoengineer

git clone https://github.com/kanzure/nanoengineer.git
cd nanoengineer
./bootstrap
./configure
make
sudo make install

故障排除

在Debian Jessie上,您将收到无法穿裤子所提到的错误消息。似乎automake脚本存在问题。x86_64-linux-gnu-gcc被插入到CFLAGS中,gcc会将其解释为其中一个源文件的名称。作为一种解决方法,让我们创建一个具有该名称的空文件。它是空的,这样就不会更改程序,并且是那个特定的名称,以便编译器选择它。从克隆的nanoengineer目录中运行此命令,使gcc快乐(是的,这是一个hack,但它确实起作用)...

touch sim/src/x86_64-linux-gnu-gcc

如果您在尝试编译HDF5时收到以下错误消息:“error: call to ‘__open_missing_mode’ declared with attribute error: open with O_CREAT in second argument needs 3 arguments”,则请修改文件perform/zip_perf.c,将第548行修改为以下内容,然后重新运行make命令...

output = open(filename, O_RDWR | O_CREAT, S_IRUSR|S_IWUSR);

如果在构建Nanoengineer时收到关于未找到Numeric/arrayobject.h的错误消息,请尝试运行

export CPPFLAGS=-I/usr/local/include/python2.7
./configure
make
sudo make install
如果你收到类似于“TRACE_PREFIX未声明”的错误消息,请修改文件sim/src/simhelp.c中的38到41行,使其看起来像这样,并重新运行make:
#ifdef DISTUTILS
static char tracePrefix[] = "";
#else
static char tracePrefix[] = "";

如果您在尝试启动NanoEngineer-1时收到错误消息,并提到类似于“无法导入名称GL_ARRAY_BUFFER_ARB”,请修改以下文件中的行:

/usr/local/bin/NanoEngineer1_0.9.2.app/program/graphics/drawing/setup_draw.py
/usr/local/bin/NanoEngineer1_0.9.2.app/program/graphics/drawing/GLPrimitiveBuffer.py
/usr/local/bin/NanoEngineer1_0.9.2.app/program/prototype/test_drawing.py

看起来像这样:

from OpenGL.GL import GL_ARRAY_BUFFER_ARB
from OpenGL.GL import GL_ELEMENT_ARRAY_BUFFER_ARB

看起来像这样:

from OpenGL.GL.ARB.vertex_buffer_object import GL_ARRAY_BUFFER_AR
from OpenGL.GL.ARB.vertex_buffer_object import GL_ELEMENT_ARRAY_BUFFER_ARB

我还找到了一份已被删除的附加故障排除文本文件,但你可以在这里找到它。


看起来我还有它,我从未将它删除:http://diyhpl.us/~bryan/irc/nanoengineer/kirka_NE1_work_log.txt - kanzure
谢谢,我可能进入了一个错误的URL。 - mdadm
非常感谢您在这里的工作。我通过apt安装了“libhdf5-dev”,按照您描述的方式删除了它并安装了HDF5 1.6.5源代码。然而,我仍然遇到相同的错误:gcc: error: x86_64-linux-gnu-gcc: No such file or directory。我正在运行Debian jessie。我想知道这是否是问题所在。(我选择jessie而不是7,因为7没有我的wifi卡驱动程序。)谢谢! - cat pants
1
好的,谢谢。让我试一下 Jessie 看看能否重现。你尝试过从头开始使用 nanoengineer 目录的新克隆,安装第一步描述的所有软件包,然后运行引导程序,最后再进行配置吗? - mdadm
1
好的,我已经成功加载了Debian Jessie并重现了这个问题。我对automake和m4有点生疏,似乎有一个错误导致编译命令中出现了错误的x86_64-linux-gnu-gcc。这里有一个解决方法,让我可以绕过错误并编译所有内容。从nanoengineer目录运行touch src/sim/x86_64-linux-gnu-gcc...这将给gcc一个空文件,并让它保持安静。这是一个恶劣的hack,但它有效 :) 我会继续挖掘并看看是否能找到修复automake系统的方法。 - mdadm
显示剩余8条评论

99
你只需要输入这个命令:
sudo apt install python-dev gcc

2
这对我没有用,我需要像Stephan Kristyn上面建议的那样安装python-dev。 - ben
2
谢谢,这对我有用。仅使用python-dev并不能解决它。 - horriblyUnpythonic
18
使用命令 sudo apt-get install python-dev gcc 安装 Python 开发环境和 GCC 编译器。 - AbdulMomen عبدالمؤمن
最佳答案在我看来。没有其他垃圾。 - D.Samchuk
谢谢,对于 mysqlclient 有效。 - Mrugesh Kadia
如果上面安装的是Python2,你可能需要sudo apt install python3-dev gcc - Scott Stafford

60

错误可能是由于几个缺少的软件包之一导致的。下面的命令将安装几个软件包,如g++、gcc等。

sudo apt-get install build-essential

在谷歌搜索多个页面以解决运行 pip install mysql-python 时出现的错误后,我终于解决了这个问题。 - Reimus Klinsman
帮助我安装了fbprophet。 - Talha Anwar

31
apt-get install python-dev

...解决了我的问题。


5
如果您没有自动安装推荐的软件包,那么您也需要执行 apt install gcc 命令。 - tricasse
7
针对 Python 3,执行命令 sudo apt-get install python3-dev 可安装所需的开发包。 - Javiar Sandra

10

sudo apt-get -y install python-software-properties && \
sudo apt-get -y install software-properties-common && \
sudo apt-get -y install gcc make build-essential libssl-dev libffi-dev python-dev

如果您尝试安装python的密码学库或依赖它(例如ansible)的python库,则特别需要libssl-dev和libffi-dev。


谢谢你的回复 - 我没有安装Autotools,而是安装了ReviewBoard,它需要libssl-dev和libffi-dev软件包来完成pip install步骤。 - Robert Petz

7
我成功的做法是: sudo apt-get install python3-dev build-essential gcc libpq-dev

终于这个对我有用了! - undefined

6

也许您应该安装 python3-pip
这对我有用。

sudo apt install python3-pip

在Windows 10 WSL 2上安装QuickFix时,对我来说很有效。 - etoricky

0

我在安装django.cryptography时遇到了同样的问题(错误信息)。

以下是帮助我的步骤:

  1. 升级pip(建议来自cryptography):pip3 install --upgrade pip
  2. 安装cryptography,因为它是django.cryptography要求之一,在我的情况下被忽略了:pip3 install cryptography
  3. 最后,错误消失了,我可以安装django.cryptography并开始使用加密字段。

0
我在尝试构建一个简单的C扩展模块以在Python中运行时,遇到了“gcc:错误:x86_64-linux-gnu-gcc:没有那个文件或目录”的错误。我尝试了上面所有的方法都无济于事,最后意识到我的module.c代码中有一个错误!所以我认为如果你收到这个错误消息,但是你已经正确安装了python-dev和所有其他必要的东西,你应该查找代码中的问题。

我不确定这回答了所问的问题。此外,其他比你更完整的答案已经被发布了。 - Joseph Budin

0
尝试使用 sudo apt-get -y install unixodbc-dev 命令,这对我有用。

1
unixodbc-dev的Debian软件包页面中得知:"除非您打算开发使用ODBC的C语言应用程序或从源代码编译使用ODBC的应用程序,否则您不需要安装此软件包"。我快速搜索了Nanoengineer的源代码,但没有找到对ODBC的依赖。 - He3lixxx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接