调试错误 "gcc: error: x86_64-linux-gnu-gcc: 没有此文件或目录

111 投票
11 回答
204245 浏览
提问于 2025-04-17 23:22

我正在尝试构建这个项目: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 是通过配置生成的,所以一旦我们找出错误的原因,我就得弄清楚要修改哪些文件来修复这个问题。(我自己比较喜欢用 CMake,但当然我没有选择这个项目的构建系统。)我的操作系统是 Debian。

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

如果你能在你的系统上尝试构建这个项目,我会非常感激!谢谢!

11 个回答

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的加密库,或者一些依赖于这些库的Python库(比如ansible),那么你就需要安装libssl-dev和libffi-dev这两个包。

31
apt-get install python-dev

...帮我解决了这个问题。

62

这个错误可能是因为缺少了一些软件包。下面的命令会安装一些常用的软件包,比如 g++、gcc 等等。

sudo apt-get install build-essential
100

你只需要输入这个命令:

sudo apt install python-dev gcc
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上,你可能会收到一个错误信息,正如cant pants提到的那样。似乎在automake脚本中有个问题。x86_64-linux-gnu-gcc被放入了CFLAGS中,而gcc会把它当作源文件的名字来处理。作为解决方法,我们可以创建一个同名的空文件。空文件不会改变程序,而这个名字又能让编译器找到它。从克隆的nanoengineer目录中,运行这个命令来让gcc满意(是的,这是一种变通方法,但确实有效)...

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

如果在编译HDF5时收到类似“错误:调用‘__open_missing_mode’时声明的属性错误:第二个参数的O_CREAT需要3个参数”的错误信息,请修改文件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

我还发现了一个额外的故障排除文本文件,虽然它已经被删除,但你可以在这里找到它。

撰写回答