Cannot link TopHat against libboost_thread.a - c++

I am trying to analyze data generated from RNA-seq experiments. I am trying to align the RNA-Seq reads to the genome using TopHat. But, I have got struck while installing the TopHat!
To begin with I have downloaded the following packages:
tophat-2.1.0.tar.gz
samtools-0.1.19.tar.bz2
boost_1_54_0.zip
I have unpacked all the packages.
For samtools:
I have copied all C-header files in samtools-0.1.19/install/include/bam
Then I copied the libbam.a file in samtools-0.1.19/install/lib
For boost:
I have used the following commands
$./bootstrap.sh
$./b2 install --prefix=PREFIX
For TopHat:
I have used the command line:
$./configure \
--prefix=/path/to/tophat-2.1.0 \
--with-boost=/path/to/boost_1_54_0/PREFIX \
--with-bam=/path/to/samtools-0.1.19/install
But I am getting an error message. The last few lines of the error are as follows:
checking for boostlib >= 1.38.0... yes
checking for bamlib... yes
checking build system type... x86_64-unknown-linux-gnu
checking whether the Boost::Thread library is available... yes
checking for exit in -lboost_thread... no
checking for exit in -lboost_thread... (cached) no
checking for exit in -lboost_thread... (cached) no
checking for exit in -llibboost_thread.a... no
configure: error: Could not link against libboost_thread.a !
Now my question is why I am getting the error message and what can be done to overcome this. I have tried the same in both x86_64 Ubuntu systems, but got the same error all the time!

Related

Cannot run Fortify with multi CPU for a C++ project

I have a C++ project setup with CMake, running on Mac. Recently I am looking into adding Fortify to do auto code analyzation. I am using Fortify version 22.1.
After set up the CMake and shell scripts, I found that if I compile with more than one CPU (using -j), the compiler (c++ or g++) will have issues generating the libs. Sometimes it will pass and successfully generate the Fortify output, but others it will just error out. Multi CPUs compile fine for this project without running Fortify.
I also see this error when I compile with Fortify (no matter it success or not):
[error]: Translator execution failed. Please consult the Troubleshooting section of the User Manual.
Translator returned status 1:
error: unable to handle compilation, expected exactly one compiler job in ''
This error always happens after a "Linking CXX xxxxx xxxx". I can't find any documentation about them.
Does anyone know how to solve this? Thank you.
Update more details about my setup:
I use shell files to wrap the sourceanalyzer like this:
#!/bin/bash
exec sourceanalyzer -b MyApp /Library/Developer/CommandLineTools/usr/bin/c++ "$#"
And my CMake setup like this:
if (${ENABLE_FORTIFY} EQUAL 1)
set(CMAKE_CC_COMPILER ${AVSxAppDALDefaultImplementation_SOURCE_DIR}/scripts/fortify-build-cc.sh)
set(CMAKE_CXX_COMPILER ${AVSxAppDALDefaultImplementation_SOURCE_DIR}/scripts/fortify-build-cxx.sh)
endif()
My shell script to run CMake and then to the scan:
cmake $PACKAGEPATH \
...
-DENABLE_FORTIFY="${ENABLE_FORTIFY}"
echo "---BUILDING---"
make release
if [[ $ENABLE_FORTIFY == 1 ]]; then
echo "---RUNNING FORTIFY SCAN---"
sourceanalyzer -b ${CURRENT_PROJECT_NAME} -scan -f fortify_scan_result_${CURRENT_PROJECT_NAME}.txt
fi

REDHAWK 2.2.5 on CentOS 7.5 - Build error when trying to add rh.dsp shared library to a component

While walking through the REDHAWK 2.2.5 tutorial (RH noob) on using a shared library within a component (https://redhawksdr.github.io/2.2.5/manual/shared-libraries/using-a-shared-library-project/), I ran into the following error:
...
checking for ossie home... /usr/local/redhawk/core
checking to see ossie is installed... checking for sdr root... /var/redhawk/sdr
configure: using /var/redhawk/sdr/ as installation prefix
checking whether make supports nested variables... (cached) yes
checking for PROJECTDEPS... yes
checking for sdr root... (cached) /var/redhawk/sdr
configure: error: Package rh.dsp was not found in the pkg-config search path.
Perhaps you should add the directory containing `rh.dsp.pc'
to the PKG_CONFIG_PATH environment variable
No package 'rh.dsp' found
make: *** No rule to make target `all'. Stop.
checking for C++ soft package library rh.dsp...
12:36:58 Build Failed. 1 errors, 0 warnings. (took 18s.558ms)
I created the HelloWorld component as per https://redhawksdr.github.io/2.2.5/manual/components/hello-world-component/ (has no ports, BTW), and attempted to add the Soft Pkg Ref library "dsp" as shown in the REDHAWK Explorer of the IDE under "Shared Libraries/dsp". After "Generate All Implementations" on the HelloWorld component, I got the above build failure. I attempted to edit the configure.am file via
export PKG_CONFIG_PATH=$SDRROOT/dom/deps/rh/dsp:$PKG_CONFIG_PATH
...but to no avail. I took a look at sample components provided with REDHAWK (in Explorer under "Target SDR/Components/rh", like "autocorrelate") to see how it was done within REDHAWK. One difference I see is that the Soft Pkg Ref dependency on autocorrelate has a "(cpp)" after it and mine does not, i.e. autocorrelate looks like: "Soft Pkg Ref:/deps/rh/dsp/dsp.spd.xml(cpp)".
As a first port of call, you should inspect the contents of the HelloWorld.spd.xml file. In there, you should see the <implementation id="cpp"> section, which should contain:
<dependency type="runtime_requirements">
<softpkgref>
<localfile name="/deps/rh/dsp/dsp.spd.xml"/>
<implref refid="cpp"/>
</softpkgref>
</dependency>
An example for the FastFilter component can be found here (see lines 39 and 51).

NPM sqlite3 with sqlcipher support

I am trying to cross compile NPM Sqlite3 with sqlcipher support. I am using Ubuntu 16.04 to cross compile for linux armv7 based SOC(system on chip).
So I started with cross-compiling OpenSSL to build sqlcipher for arm. I successfully cross compiled sqlcipher to produce a static library (libsqlcipher.a).
Now I am trying to get the NodeJS side of the project. I need sqlite with sqlcipher support, compiled for arm. I am using SOC SDK to built till now.
I am using node v4.6.1 and npm v2.15.9 to cross compile. I made sure I have the same version installed on Ubuntu as the SOC.
The command I use to cross compile is as follows :
npm install sqlite3 --target_arch=arm --enable-static=yes --build-from-source --sqlite_libname=sqlcipher -fPIC --sqlite=home/onkar/Library/sqlcipher-master/.libs --verbose
I exported the location of the libsqlcipher.a to LDFLAGS. I get the following error when I try to cross compile. Can someone help me with this error?
/home/linuximage/sdk/sysroots/x86_64-angstromsdk-linux/usr/libexec/arm-angstrom-linux-gnueabi/gcc/arm-angstrom-linux-gnueabi/5.2.1/real-ld: error: /home/Library/sqlcipher-master/.libs/libsqlcipher.a(sqlite3.o): requires unsupported dynamic reloc R_ARM_THM_MOVW_ABS_NC; recompile with -fPIC
collect2: error: ld returned 1 exit status
node_sqlite3.target.mk:129: recipe for target 'Release/obj.target/node_sqlite3.node' failed
make: *** [Release/obj.target/node_sqlite3.node] Error 1
Please let me know if you require any additional information, I would be more than happy to provide you with the same.
Thanks,
Onkar
In the first instance, you should check if the -fPIC (position independent code) flag was correctly applied when the libsqlcipher.a file was originally created.
In your output above, it looks like the linker is using the file at:
/home/Library/sqlcipher-master/.libs/libsqlcipher.a
Run the command
objdump -r /home/Library/sqlcipher-master/.libs/libsqlcipher.a | more
... and check for a line close to the start of the output beginning with the text
RELOCATION RECORDS FOR
If you see this line, then the library doesn't contain position independent code.

Building MongoDB C++ Driver in Cygwin: generate_error_codes.py not found

I am trying to build the MongoDB client library on Cygwin.
Administrator#dev /cygdrive/e/warez/dev-tools/cpp/mongodb-src-r2.4.8
$ scons mongoclient
scons: Reading SConscript files ...
scons version: 2.3.0
python version: 2 7 5 'final' 0
No special config for [cygwin] which probably means it won't work
Checking whether the C++ compiler works(cached) yes
Checking for C header file unistd.h... (cached) yes
Checking whether clock_gettime is declared... (cached) yes
Checking for C library rt... (cached) yes
Checking for C++ header file execinfo.h... (cached) no
Checking for C library pcap... (cached) no
Checking for C library wpcap... (cached) no
scons: done reading SConscript files.
scons: Building targets ...
scons: *** [build/cygwin/normal/mongo/base/error_codes.h] Source `src/mongo/base/generate_error_codes.py' not found, needed by target `build/cygwin/normal/mongo/base/error_codes.h'.
scons: building terminated because of errors.
Administrator#dev /cygdrive/e/warez/dev-tools/cpp/mongodb-src-r2.4.8
$ ls -l src/mongo/base/generate_error_codes.py
-rwx------+ 1 Administrators None 8736 Oct 31 22:15 src/mongo/base/generate_error_codes.py
There are two questions related to building MongoDB driver:
https://stackoverflow.com/questions/16060068/c-mongodb-driver-in-cygwin
Compiling MongoDB C++ driver on Cygwin
They didn't get the error:
No special config for [cygwin] which probably means it won't work
I've tried both mongodb-src-r2.4.8 and latest code from github (https://github.com/mongodb/mongo), with no luck.
How should I fix the issue? Thanks in advance.
Running scons to build MongoDB under Cygwin bash on Windows is not currently supported. The solution is to use a native Visual Studio Command Prompt.

Build GDB in Mingw error, configure: error: no enhanced curses library found; disable TUI

I tried to build GDB 7.51 in mingw for cross platform debugging, and I found GDB has TUI as frontend. Anyway, I configure GDB with --enable-tui, and then make always stop with error message:
configure: error: no enhanced curses library found; disable TUI
I checked this problem by google, and then I downloaded ncurses source from GNU
ncurses 5.9
build and install it in my c:/mingw/msys/1.0/local/
run the configure of GDB with following script statements
export PATH=$PREFIX/gccbinutils/bin/:/usr/local/bin:/usr/bin:/bin:/mingw/bin
export C_INCLUDE_PATH=/usr/local/include:/usr/local/include/ncursest:/usr/include:/c/mingw/include
export CPLUS_INCLUDE_PATH=/usr/local/include:/usr/local/include/ncursest:/usr/include:/c/mingw/include
export LIBRARY_PATH=/usr/local/lib:/usr/lib:/c/mingw/lib
export LD_LIBRARY_PATH=/usr/local/lib:/usr/lib:/c/mingw/lib
export LDFLAGS="-L/usr/local/lib -L/usr/lib -L/c/mingw/lib"
export LIBS="-lncursest"
$BUILD_MIPSGCCDIR/gdb/configure --prefix=$PREFIX/$pkg --target=$TARGET \
--enable-tui \
--enable-curses \
--enable-sim > $BUILDPATH/$TARGET$pkg.conf1.$argn.log 2>&1
but it did not work. Make stopped with following messages
checking for zlib.h... yes
checking for library containing dlgetmodinfo... no
checking for iconv... yes
checking for iconv declaration... install-shextern size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
checking for library containing waddstr... no
configure: error: no enhanced curses library found; disable TUI
make[1]: *** [configure-gdb] Error 1
make[1]: Leaving directory `/d/tools/buildmipsgcc/build_gdb'
make: *** [all] Error 2
I have searched the waddstr , and sure it was exist in my c:/mingw/msys/1.0/local/lib/libncursest.a.
OK, lets try to fool Autotools by providing hand-written libncurses.la:
# libncurses.la - a libtool library file
# Generated by ltmain.sh (GNU libtool) 2.2.7a
#
# Please DO NOT delete this file!
# It is necessary for linking the library.
# The name that we can dlopen(3).
dlname=''
# Names of this library.
library_names=''
# The name of the static archive.
old_library='libncursest.a'
# Linker flags that can not go in dependency_libs.
inherited_linker_flags=''
# Libraries that this one depends upon.
dependency_libs=''
# Names of additional weak libraries provided by this library
weak_library_names=''
# Version information for libncurses.
current=5
age=0
revision=9
# Is this an already installed library?
installed=yes
# Should we warn about portability when linking against -modules?
shouldnotlink=no
# Files to dlopen/dlpreopen
dlopen=''
dlpreopen=''
# Directory that this library needs to be installed in:
libdir='c:/mingw/msys/1.0/local/lib'
Check paths and names that I've supplied, if they are different - change them. Report if it still does not work, and I'll try to expand it further until we finally fix it.