I picked yours as the answer. I didn't work for me but may be useful to others doing something similar.
I've been trying to assemble 454 bacterial scaffolds into a draft assembly using Bambus and a reference genome. I can't however get bambus to compile on my ubuntu machine. According to this guide (PDF) you need to update the header file to include additional references which I have done. However I am still unable to get the grommit binary to compile. The error messages produced by make are shown below. Can anyone offer any suggestions?
for i in src doc ;do cd $i ; make all; cd .. ; done
make[1]: Entering directory `/tmp/bambus-2.33/src'
for i in IO DotLib TIGR_Foundation_CC grommit ;do cd $i ; make all; cd .. ; done
make[2]: Entering directory `/tmp/bambus-2.33/src/IO'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/tmp/bambus-2.33/src/IO'
make[2]: Entering directory `/tmp/bambus-2.33/src/DotLib'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/tmp/bambus-2.33/src/DotLib'
make[2]: Entering directory `/tmp/bambus-2.33/src/TIGR_Foundation_CC'
g++ -D_HAS_GETOPT -c -o FileSystem.o FileSystem.cc
FileSystem.cc: In static member function ‘static bool
FileSystem::isCreatableFile(const char*)’:
FileSystem.cc:58: error: invalid conversion from ‘const char*’ to ‘char*’
make[2]: *** [FileSystem.o] Error 1
make[2]: Leaving directory `/tmp/bambus-2.33/src/TIGR_Foundation_CC'
make[2]: Entering directory `/tmp/bambus-2.33/src/grommit'
g++ -Wl -L../TIGR_Foundation_CC/ -o grommit grommit.o -L. -lgraph -lTigrFoundation
/usr/bin/ld: cannot find -lTigrFoundation
collect2: ld returned 1 exit status
make[2]: *** [grommit] Error 1
make[2]: Leaving directory `/tmp/bambus-2.33/src/grommit'
make[1]: Leaving directory `/tmp/bambus-2.33/src'
make[1]: Entering directory `/tmp/bambus-2.33/doc'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/tmp/bambus-2.33/doc'
4 answers
Edited just these four files
nano ./src/TIGR_Foundation_CC/ConfigFile.hh
nano ./src/TIGR_Foundation_CC/Logger.hh
nano ./src/TIGR_Foundation_CC/OptionResult.hh
nano ./src/TIGR_Foundation_CC/Options.hh
plus BASEDIR in Makefile. No errors while compiling bambus_2.33 on Debian 5.04 inside VirtualBox. gcc 4.3.2.
In your case I would:
- check the edits after good night sleep on a fresh source
- wait a day for some C guru before going some heroic route of switching systems
If you are in a hurry then setting up VirtualBox + Debian takes few hours max, but I am not sure how much load (genome size etc) this can take.
EDIT: format
Just at a first glance, the key error line is:
/usr/bin/ld: cannot find -lTigrFoundation
This tells you that the linker (ld) is looking for a library file named TigrFoundation and cannot find it. That may be because it does not exist - do you need to install something else before BAMBUS? - or because it is in a non-standard location. if the latter, you can try something like (in bash):
export LD_LIBRARY_PATH=/path/to/directory_containing_TigrFoundation/:$LD_LIBRARY_PATH
make clean
make
or just run the line and replace -lTigrFoundation with -l/path/to/TigrFoundation libraries ...
I can't find find any files called TigrFoundation. There are however .cc and .hh files called TIGR_Foundation. I've tried updating the makefile so that it's -lTIGR_Foundation how I still get the same error. Specifically what file type is the linker looking for?
Probably the linker is looking for compiled libraries. Is there a way for you to compile the TIGR_Foundation?
I am also getting this same error.If you find some solution please let me know and definitively if I find a solution...I will post it here.
I was able to compile succesfully with the PDF guide. Under the following ubuntu distro:
2.6.32-27-generic #49-Ubuntu SMP Thu Dec 2 00:51:09 UTC 2010 x86_64 GNU/Linux | gcc version 4.4.3
But first compiling & installing the Tigr_Foundation libraries the trick is adding this header to the Options.hh ($/bambus-2.33/src/TIGR_Foundation_CC/Options.hh)
"#include <cstdio>"
Then you compile & install bambus 2.3
*if you got some previous issues with the gcc substitute the syntaxis following the next help:
An example.
const char* str1;
char* str2 = strchr(str1, 'a');
Gives the following compiler error:
error: invalid conversion from ‘const char*’ to ‘char*’
Fixing this is easy, as demonstrated below.
const char* str1;
const char* str2 = strchr(str1, 'a');
Log in to answer this question.