Answers.Body: <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>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2020-10-12T19:50:38.977Z
Answers.LastActivityDate: 2020-10-12T19:50:38.977Z
Answers.UserDisplayName: Jesse
Body: <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>
  
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2020-09-26T16:47:55.833Z
Comments.Text: Did you remember to source your bashrc before compiling?
Comments.UserDisplayName: user438383
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2020-09-26T16:54:12.560Z
Comments.Text: sure: source ~./bashrc
Comments.UserDisplayName: Suvar
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2020-09-27T17:08:32.050Z
Comments.Text: 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
Comments.UserDisplayName: h.mon
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2020-09-28T10:31:51.477Z
Comments.Text: 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`.
Comments.UserDisplayName: zorbax
Tags: <software-installation><bowtie2>
Title: install bowtie2 from sources cannot find -ltbb
ThreadText: # 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/username_0/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](http://gcc.gnu.org/onlinedocs/gcc/Environment-Variables.html) 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 username_2 suggested and use an existing binary, or use a package manger to install it like username_3 suggested. [Conda](https://conda.io/) has [a package for bowtie2 in the bioconda channel](https://anaconda.org/bioconda/bowtie2), up through and beyond version 2.4.1, and you can use that as a package manager without root access.
  
  
  ---
  
  