x86 64 linux gnu g++ failed,调试错误“gcc:error:x86_64-linux-gnu-gcc:No such file or directory”...

这篇博客提供了一份详尽的指南,说明如何在Ubuntu 12.04 x86和Debian 7.4 x86上构建NanoEngineer。涉及的步骤包括安装必要的依赖项如build-essential、autoconf、NumArray、Numeric和HDF5,以及解决在安装过程中遇到的特定错误,例如GCC的问题、HDF5的编译错误和NanoEngineer的导入问题。此外,还提供了针对Debian Jessie的故障排除技巧。

经过大量的工作之后,我得以在Ubuntu12.04x86和Debian7.4x86上构建它。我在下面写了一本指南。你能试着跟着它看看它能不能解决这个问题吗?

如果没有,请告诉我你在哪里卡住了。

安装公共依赖项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.2wget 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

安装数字23.8wget 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.5wget 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

安装Nanoengineergit clone https://github.com/kanzure/nanoengineer.git

cd nanoengineer

./bootstrap

./configure

make

sudo make install

故障排除

在Debian Jessie上,您将收到cant pants提到的错误消息。在汽车制造脚本中似乎有一个问题。x86_64-linux-gnu-gcc插入到CFLAGS中,并且gcc将其解释为一个源文件的名称。作为解决方法,让我们用该名称创建一个空文件。空的,这样它就不会改变程序和那个名字,这样编译器就可以接收它。从克隆的nanoengineer目录中,运行此命令以使gcc高兴(这是一个hack-yes,但它确实有效)。。。touch sim/src/x86_64-linux-gnu-gcc

如果在尝试编译HDF5时收到一条错误消息,其行为:“error:调用用属性error:open with O_CREAT in second argument声明的'\uu open_missing_mode',需要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 undeclared”的错误消息,请修改文件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

我还发现了另一个已删除的疑难解答文本文件,但您可以找到它here

### 编译器错误分析 当遇到 `command 'x86_64-linux-gnu-g++' failed with error 'No such file or directory'` 的问题时,通常是因为开发环境中缺少必要的编译工具链或依赖项。以下是可能的原因以及解决方案: #### 原因 1:未安装 GCCG++ 在 Debian 及其衍生发行版(如 Ubuntu)中,默认情况下可能并未完全安装完整的 C/C++ 开发环境。这可能导致无法找到所需的编译器。 **解决方案**: 可以通过以下命令来安装缺失的工具链: ```bash sudo apt-get update sudo apt-get install build-essential ``` 上述命令会安装 GNU Compiler Collection (GCC),其中包括了 `g++` 和其他必需的开发工具[^1]。 --- #### 原因 2:缺少特定架构的支持库 如果目标平台涉及多架构支持,则需要额外安装针对 `x86_64-linux-gnu` 架构的相关库和支持文件。 **解决方案**: 执行以下命令以确保安装了所有必要依赖项: ```bash sudo apt-get install gcc-multilib g++-multilib ``` 这些包提供了跨架构编译所需的支持文件[^2]。 --- #### 原因 3:缺少特定头文件或静态链接库 某些项目在编译过程中可能会调用外部库(例如 OpenSSL、libffi 等)。如果没有正确安装这些库及其对应的开发头文件,也会引发类似的错误。 **解决方案**: 根据具体的编译需求,安装相应的开发库。常见的有: ```bash sudo apt-get install libssl-dev libffi-dev libsasl2-dev ``` 对于更复杂的场景,还可以考虑安装通用数学库支持: ```bash sudo apt-get install libgmp-dev libmpfr-dev libmpc-dev ``` 如果有 Python 组件参与编译过程,还需要确认已安装对应版本的 Python 头文件: ```bash sudo apt-get install libpython3.8-dev ``` 注意替换 `3.8` 为实际使用的 Python 版本号[^4]。 --- #### 原因 4:路径配置不正确 有时即使已经安装了相关软件包,但由于 PATH 环境变量设置不当或者编译脚本中的硬编码路径冲突,仍会出现找不到指定工具的情况。 **临时解决办法**: 手动创建一个占位符文件让编译器跳过检测阶段: ```bash touch /usr/bin/x86_64-linux-gnu-g++ chmod +x /usr/bin/x86_64-linux-gnu-g++ ``` 这种方法虽然简单粗暴但能快速验证是否属于单纯命名匹配失败引起的问题[^5]。 另一种方式则是调整 Makefile 或者 setup.py 文件内的 CC/CXX 参数定义部分,显式指向系统中存在的真实可执行二进制位置。 --- ### 总结建议流程 1. 更新并升级 APT 软件源列表; 2. 安装基础构建套件(build-essential); 3. 补充多架构交叉编译能力(gcc/g++-multilib); 4. 额外加载项目依赖的具体动态/静态库资源(libxxx-dev系列); 5. 若以上均无效再尝试伪造目标程序期待发现却不存在的实际实体对象实例(touch trick). 通过逐步排查上述几个方面应该能够有效定位并最终消除该类编译期异常状况的发生.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值