# install bowtie2 from sources cannot find -ltbb

I am trying to install bowtie2 aligner from sources without the root access. Bowtie2 needs tbb package to be installed and it is recommended to install oneTBB.

# install one TBB
mkdir -p SHOME/soft
cd $HOME/soft git clone https://github.com/oneapi-src/oneTBB.git cd oneTBB make  Then I add C_INCLUDE_PATH to .bashrc: echo "export C_INCLUDE_PATH=$HOME/soft/oneTBB/include" >> ~./bashrc


and continue to install bowtie2:

# install bowtie2
mkdir -p $HOME/soft/bowtie/source cd$HOME/soft/bowtie/source
wget https://sourceforge.net/projects/bowtie-bio/files/bowtie2/2.4.1/bowtie2-2.4.1-source.zip
unzip bowtie2-2.4.1-source.zip -d ..
cd ../bowtie2-2.4.1
make


TBB library is recognized but in the end I get this error:

/usr/bin/ld: cannot find -ltbb
/usr/bin/ld: cannot find -ltbbmalloc_proxy
collect2: error: ld returned 1 exit status


ltbb and ltbballoc_proxy are not in TBB but libtbb and libtbballoc_proxy instead. I also tryed to add variables to .bashrc:

TBB_LIB_PATH=$HOME/soft/oneTBB TBB_INCLUDE_PATH=$HOME/soft/oneTBB/include
TBB_RELEASE_DIR=$HOME/soft/oneTBB/build/home/suvar/apps/oneTBB/build/linux_intel64_gcc_cc9.3.0_libc2.31_kernel5.4.0_release  but seems it does not help. I need help to complete the installation of bowtie2 on our server. • Did you remember to source your bashrc before compiling? Sep 26 '20 at 16:47 • sure: source ~./bashrc Sep 26 '20 at 16:54 • Do you really need to compile Bowtie2? There are compiled binaries for Linux and MaxOsX available: sourceforge.net/projects/bowtie-bio/files/bowtie2/2.4.1/… sourceforge.net/projects/bowtie-bio/files/bowtie2/2.4.1/… Sep 27 '20 at 17:08 • If you are using Ubuntu you can install tbb with sudo apt install libtbb-dev, in MacOS you can install it with Homebrew brew install tbb. Sep 28 '20 at 10:31 ## 1 Answer You need to give the path to the source files for the compiler and the full path to the compiled libraries (all parent directories included) for the linker. You also need to use either CPATH or CPLUS_INCLUDE_PATH instead of C_INCLUDE_PATH to point to the oneTBB source, since bowtie2 is C++ and C_INCLUDE_PATH will only have an effect for C (see Environment Variables Affecting GCC in the GCC documentation for more info.) For example like this, inside bowtie2-2.4.1, without making any lasting changes to the shell's setup in this case: $$ONETBB=$$HOME/soft/oneTBB $$export LIBRARY_PATH=$$ONETBB/build/linux_intel64_gcc_cc5.4.0_libc2.23_kernel4.4.0_release $$export LD_LIBRARY_PATH=$$LIBRARY_PATH $$export CPATH=$$ONETBB/include$ make


After it's built you'll still need the library path to oneTBB defined (via LD_LIBRARY_PATH) so bowtie2 can find it at run-time.

But if you don't have a specific reason to compile from source I'd recommend avoiding it. You could go with what h.mon suggested and use an existing binary, or use a package manger to install it like zorbax suggested. Conda has a package for bowtie2 in the bioconda channel, up through and beyond version 2.4.1, and you can use that as a package manager without root access.