3

Im trying to locally install a program which is written in C++. I have downloaded the program and am attempting to use the "make" command to compile the program as the programs instructions dictate. However when I do I get this error:

/usr/include/stdc-predef.h:30:26: fatal error: bits/predefs.h: No such file or directory 
compilation terminated.

Looking around on the internet some people seem to address this problem by

 sudo apt-get install libc6-dev-i386

I checked to see if this package was installed and it was not. When I try to install it I get

E: Unable to locate package libc6-dev-i386 

I have already run

sudo apt get update   

Im sure this is a rookie question but any help is appreciated, I'm running 13.10 32-bit.

UPDATE: I've tried other suggestions I've found on similar error. All I have managed is a different but similar error. Here is what I get.

Geoffrey@Geoffrey-Latitude-E6400:/usr/local/src/trinityrnaseq_r2013_08_14$ make
Using gnu compiler for Inchworm and Chrysalis
cd Inchworm && (test -e configure || autoreconf) \
                && ./configure --prefix=`pwd`  && make install
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... yes
checking for g++... g++
checking for C++ compiler default output file name... a.out
checking whether the C++ compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables... 
checking for suffix of object files... o
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking for style of include used by make... GNU
checking dependency style of g++... gcc3
checking for library containing cos... none required
configure: creating ./config.status
config.status: creating Makefile
config.status: creating src/Makefile
config.status: creating config.h
config.status: config.h is unchanged
config.status: executing depfiles commands
make[1]: Entering directory `/usr/local/src/trinityrnaseq_r2013_08_14/Inchworm'
Making install in src
make[2]: Entering directory `/usr/local/src/trinityrnaseq_r2013_08_14/Inchworm/src'
if g++ -DHAVE_CONFIG_H -I. -I. -I..    -pedantic -fopenmp -Wall -Wextra -Wno-long-long -Wno-deprecated -m64 -g -O2 -MT Fasta_entry.o -MD -MP -MF ".deps/Fasta_entry.Tpo" -c -o Fasta_entry.o Fasta_entry.cpp; \
then mv -f ".deps/Fasta_entry.Tpo" ".deps/Fasta_entry.Po"; else rm -f ".deps/Fasta_entry.Tpo"; exit 1; fi
In file included from Fasta_entry.hpp:4:0,
             from Fasta_entry.cpp:1:
/usr/include/c++/4.8/string:38:28: fatal error: bits/c++config.h: No such file or directory
#include <bits/c++config.h>
                        ^
compilation terminated.
make[2]: *** [Fasta_entry.o] Error 1
make[2]: Leaving directory `/usr/local/src/trinityrnaseq_r2013_08_14/Inchworm/src'
make[1]: *** [install-recursive] Error 1
make[1]: Leaving directory `/usr/local/src/trinityrnaseq_r2013_08_14/Inchworm'
make: *** [inchworm] Error 2
3
  • 1
    This file is found in package libc6-dev. The i386 part is unnecessary since you're already running a 32-bit environment, but would be needed for compiling 32-bit applications on a 64-bit host. You should install the package build-essential which depends on this and a few other fundamental necessities for compiling C/C++ code.
    – chronitis
    Oct 30, 2013 at 9:59
  • Thanks for your reply. I checked and have libc6-dev and build-essential installed. However I still have my original problem and get the predefs.h error when I try and install the program I want to use.
    – G_T
    Oct 30, 2013 at 19:37
  • The latter error (bits/c++config.h) suggests you need the C++ stdlib headers (libstdc++-4.8-dev). Unfortunately the tarball doesn't seem to include a list of dependencies or a global configure file so it's a bit hard to know what other requirements might be lurking.
    – chronitis
    Nov 1, 2013 at 19:43

2 Answers 2

5

With Ubuntu 13.10 amd64,
the problem /usr/include/stdc-predef.h:30:26: fatal error: bits/predefs.h: No such file or directory compilation terminated. has been solved after:

$ sudo apt-get install build-essential
$ sudo apt-get install libc6-dev-i386
$ sudo apt-get install g++-4.8-multilib
0

I resolved this issue by changing the build target architecture. G++ 4.8.0 and on appears to have broken its multilib support, as referenced in their mailing lists. I have a 64-bit native machine, and attempting to compile in 32-bit results in an error. However, compiling in 64-bit works properly. I'll go over my laptop later on and see which packages I installed to get around this issue.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .