<p>You need to give the path to the source files for the compiler <em>and</em> 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 <a href="http://gcc.gnu.org/onlinedocs/gcc/Environment-Variables.html" rel="nofollow noreferrer">Environment Variables Affecting GCC</a> in the GCC documentation for more info.)</p>
<p>For example like this, inside bowtie2-2.4.1, without making any lasting changes to the shell's setup in this case:</p>
<pre><code><span class="math-container">$ ONETBB=$</span>HOME/soft/oneTBB
<span class="math-container">$ export LIBRARY_PATH=$</span>ONETBB/build/linux_intel64_gcc_cc5.4.0_libc2.23_kernel4.4.0_release
<span class="math-container">$ export LD_LIBRARY_PATH=$</span>LIBRARY_PATH
<span class="math-container">$ export CPATH=$</span>ONETBB/include
$ make
</code></pre>
<p>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.</p>
<p><strong>But if you don't have a specific reason to compile from source I'd recommend avoiding it.</strong>  You could go with what h.mon suggested and use an existing binary, or use a package manger to install it like zorbax suggested.  <a href="https://conda.io/" rel="nofollow noreferrer">Conda</a> has <a href="https://anaconda.org/bioconda/bowtie2" rel="nofollow noreferrer">a package for bowtie2 in the bioconda channel</a>, up through and beyond version 2.4.1, and you can use that as a package manager without root access.</p>

CC BY-SA 4.0
2020-10-12T19:50:38.977Z
2020-10-12T19:50:38.977Z
Jesse
<p>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.</p>
<pre><code># install one TBB
mkdir -p SHOME/soft
cd $HOME/soft
git clone https://github.com/oneapi-src/oneTBB.git
cd oneTBB
make
</code></pre>
<p>Then I add C_INCLUDE_PATH to .bashrc:</p>
<pre><code>echo &quot;export C_INCLUDE_PATH=$HOME/soft/oneTBB/include&quot; &gt;&gt; ~./bashrc
</code></pre>
<p>and continue to install bowtie2:</p>
<pre><code># 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
</code></pre>
<p>TBB library is recognized but in the end I get this error:</p>
<pre><code>/usr/bin/ld: cannot find -ltbb
/usr/bin/ld: cannot find -ltbbmalloc_proxy
collect2: error: ld returned 1 exit status
</code></pre>
<p>ltbb and ltbballoc_proxy are not in TBB but libtbb and libtbballoc_proxy instead.
I also tryed to add variables to .bashrc:</p>
<pre><code>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
</code></pre>
<p>but seems it does not help.</p>
<p>I need help to complete the installation of bowtie2 on our server.</p>

CC BY-SA 4.0
2020-09-26T16:47:55.833Z
Did you remember to source your bashrc before compiling?
user438383
CC BY-SA 4.0
2020-09-26T16:54:12.560Z
sure: source ~./bashrc
Suvar
CC BY-SA 4.0
2020-09-27T17:08:32.050Z
Do you really need to compile Bowtie2? There are compiled binaries for Linux and MaxOsX available:
https://sourceforge.net/projects/bowtie-bio/files/bowtie2/2.4.1/bowtie2-2.4.1-linux-x86_64.zip
https://sourceforge.net/projects/bowtie-bio/files/bowtie2/2.4.1/bowtie2-2.4.1-macos-x86_64.zip
h.mon
CC BY-SA 4.0
2020-09-28T10:31:51.477Z
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`.
zorbax
<software-installation><bowtie2>
install bowtie2 from sources cannot find -ltbb
# install bowtie2 from sources cannot find -ltbb

(Asked by: username_0 on 2020-09-26)

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.

**Tags:** software-installation, bowtie2
> **Comments:**
> **username_1**: Did you remember to source your bashrc before compiling?  
> **username_0**: sure: source ~./bashrc  
> **username_2**: Do you really need to compile Bowtie2? There are compiled binaries for Linux and MaxOsX available: https://sourceforge.net/projects/bowtie-bio/files/bowtie2/2.4.1/bowtie2-2.4.1-linux-x86_64.zip https://sourceforge.net/projects/bowtie-bio/files/bowtie2/2.4.1/bowtie2-2.4.1-macos-x86_64.zip  
> **username_3**: 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`.  

---

## 1 answers

### Answer by username_4 on 2020-10-12. Score: 1

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.


---

