调试错误 "gcc: error: x86_64-linux-gnu-gcc: 没有此文件或目录
我正在尝试构建这个项目: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 个回答
你需要运行以下命令来安装一些软件包:
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这两个包。
apt-get install python-dev
...帮我解决了这个问题。
这个错误可能是因为缺少了一些软件包。下面的命令会安装一些常用的软件包,比如 g++、gcc 等等。
sudo apt-get install build-essential
你只需要输入这个命令:
sudo apt install python-dev gcc
经过一番努力,我终于在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
我还发现了一个额外的故障排除文本文件,虽然它已经被删除,但你可以在这里找到它。