Search code examples
pythongccmakefileautotools

Debugging the error "gcc: error: x86_64-linux-gnu-gcc: No such file or directory"


I'm trying to build: https://github.com/kanzure/nanoengineer

But it looks like it errors out on:

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 definitely exists in /usr/bin (It's a symlink) and the target definitely exists as well. It looks to me like the Makefile wasn't generated correctly, perhaps there is a flag that should be passed before specifying x86_64-linux-gnu-gcc? I am unsure as well what specifying x86_64-linux-gnu-gcc is supposed to accomplish.

Finally, this makefile was generated by configure, so once we narrow down the cause of the error, I'll have to figure out what files to modify in order to fix this. (I'm a CMake kind of guy myself, but of course I didn't choose the build system for this project.) My OS is Debian.

I've tried building this branch as well: https://github.com/kanzure/nanoengineer/branches/kirka-updates

If you can try getting this to build on your system, I would greatly appreciate it! Thanks!


Solution

  • After a fair amount of work, I was able to get it to build on Ubuntu 12.04 x86 and Debian 7.4 x86_64. I wrote up a guide below. Can you please try following it to see if it resolves the issue?

    If not please let me know where you get stuck.

    Install Common Dependencies

    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
    

    Install 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
    

    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
    

    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
    

    Install Nanoengineer

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

    Troubleshooting

    On Debian Jessie, you will receive the error message that cant pants mentioned. There seems to be an issue in the automake scripts. x86_64-linux-gnu-gcc is inserted in CFLAGS and gcc will interpret that as a name of one of the source files. As a workaround, let's create an empty file with that name. Empty so that it won't change the program and that very name so that compiler picks it up. From the cloned nanoengineer directory, run this command to make gcc happy (it is a hack yes, but it does work) ...

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

    If you receive an error message when attemping to compile HDF5 along the lines of: "error: call to ‘__open_missing_mode’ declared with attribute error: open with O_CREAT in second argument needs 3 arguments", then modify the file perform/zip_perf.c, line 548 to look like the following and then rerun make...

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

    If you receive an error message about Numeric/arrayobject.h not being found when building Nanoengineer, try running

    export CPPFLAGS=-I/usr/local/include/python2.7
    ./configure
    make
    sudo make install
    

    If you receive an error message similar to "TRACE_PREFIX undeclared", modify the file sim/src/simhelp.c lines 38 to 41 to look like this and re-run make:

    #ifdef DISTUTILS
    static char tracePrefix[] = "";
    #else
    static char tracePrefix[] = "";
    

    If you receive an error message when trying to launch NanoEngineer-1 that mentions something similar to "cannot import name GL_ARRAY_BUFFER_ARB", modify the lines in the following files

    /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
    

    that look like this:

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

    to look like this:

    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
    

    I also found an additional troubleshooting text file that has been removed, but you can find it here