Question: biocLite("lpsymphony") consistently fails with linker errors (can't find static libraries to link)
0
gravatar for sunnetau
21 months ago by
sunnetau0
sunnetau0 wrote:

Hi,

the installation of "lpsymphony" with biocLite (biocLite("lpsymphony")) consistently fails towards the end with the following error messages:

[...]
make[5]: Entering directory `/tmp/RtmpDgQW2c/R.INSTALL2f0e230a700c/lpsymphony/src/SYMPHONY/SYMPHONY'
PKG_CONFIG_PATH=/tmp/RtmpDgQW2c/R.INSTALL2f0e230a700c/lpsymphony/src/SYMPHONY/lib64/pkgconfig:/tmp/RtmpDgQW2c/R.INSTALL2f0e230a700c/lpsymphony/src/SYMPHONY/lib/pkgconfig:/tmp/RtmpDgQW2c/R.INSTALL2f0e230a700c/lpsymphony/src/SYMPHONY/share/pkgconfig::/tmp/RtmpDgQW2c/R.INSTALL2f0e230a700c/lpsymphony/src/SYMPHONY/lib64/pkgconfig \
pkg-config --libs symphony > /tmp/RtmpDgQW2c/R.INSTALL2f0e230a700c/lpsymphony/src/SYMPHONY/share/coin/doc/SYMPHONY/sym_addlibs.txt
make[5]: Leaving directory `/tmp/RtmpDgQW2c/R.INSTALL2f0e230a700c/lpsymphony/src/SYMPHONY/SYMPHONY'
make[4]: Leaving directory `/tmp/RtmpDgQW2c/R.INSTALL2f0e230a700c/lpsymphony/src/SYMPHONY/SYMPHONY'
make[3]: Leaving directory `/tmp/RtmpDgQW2c/R.INSTALL2f0e230a700c/lpsymphony/src/SYMPHONY/SYMPHONY'
make[2]: Leaving directory `/tmp/RtmpDgQW2c/R.INSTALL2f0e230a700c/lpsymphony/src/SYMPHONY/SYMPHONY'
make[2]: Entering directory `/tmp/RtmpDgQW2c/R.INSTALL2f0e230a700c/lpsymphony/src/SYMPHONY'
make[3]: Entering directory `/tmp/RtmpDgQW2c/R.INSTALL2f0e230a700c/lpsymphony/src/SYMPHONY'
make[3]: Nothing to be done for `install-exec-am'.
make[3]: Nothing to be done for `install-data-am'.
make[3]: Leaving directory `/tmp/RtmpDgQW2c/R.INSTALL2f0e230a700c/lpsymphony/src/SYMPHONY'
make[2]: Leaving directory `/tmp/RtmpDgQW2c/R.INSTALL2f0e230a700c/lpsymphony/src/SYMPHONY'
make[1]: Leaving directory `/tmp/RtmpDgQW2c/R.INSTALL2f0e230a700c/lpsymphony/src/SYMPHONY'
touch SYMPHONY.ts
g++ -I/ibios/tbi_cluster/13.1/x86_64/R/R-3.4.0/lib64/R/include -DNDEBUG -ISYMPHONY/include -I/usr/local/include -fpic -g -O2 -c lp_symphony.cc -o lp_symphony.o
g++ -shared -L/ibios/tbi_cluster/13.1/x86_64/R/R-3.4.0/lib64/R/lib -L/usr/local/lib64 -o lpsymphony.so lp_symphony.o -LSYMPHONY/lib -lSym -lCgl -lOsiClp -lClp -lOsi -lCoinUtils -llapack -lblas -lgfortran -lm -lquadmath -L/ibios/tbi_cluster/13.1/x86_64/R/R-3.4.0/lib64/R/lib -lR
/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/bin/ld: cannot find -lSym
/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/bin/ld: cannot find -lCgl
/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/bin/ld: cannot find -lOsiClp
/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/bin/ld: cannot find -lClp
/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/bin/ld: cannot find -lOsi
/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/bin/ld: cannot find -lCoinUtils
collect2: error: ld returned 1 exit status
make: *** [lpsymphony.so] Error 1
ERROR: compilation failed for package ‘lpsymphony’
* removing ‘/ibios/tbi_cluster/13.1/x86_64/R/R-3.4.0/lib64/R/library/lpsymphony’
[...]

the problem as far as I can see is, that the pathes given in the pkgconfig files are wrong, hence the linker doesn't find the libraries to link into the application.  From the pathes given in the $PKG_CONFIG_PATH variable, only /tmp/RtmpDgQW2c/R.INSTALL2f0e230a700c/lpsymphony/src/SYMPHONY/lib/pkgconfig contains pkgconfig files and these contain wrong pathes:

$ cat /tmp/RtmpDgQW2c/R.INSTALL2f0e230a700c/lpsymphony/src/SYMPHONY/lib/pkgconfig/symphony.pc
prefix=/tmp/RtmpMHWvJW/Rbuild6d5ce5c339e/lpsymphony/src/SYMPHONY
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include/coin

Name: SYMPHONY
Description: SYMPHONY MILP Solver Framework
URL: https://projects.coin-or.org/SYMPHONY
Version: 5.6.10
Libs: -L${libdir} -lSym  -lgomp
Cflags: -I${includedir} -fopenmp
Requires: cgl osi-clp coinutils osi
$

There are additional pkgconfig files in /tmp/RtmpDgQW2c/R.INSTALL2f0e230a700c/lpsymphony/src/SYMPHONY/SYMPHONY/ and these do contain the correct pathes:

$ cat /tmp/RtmpDgQW2c/R.INSTALL2f0e230a700c/lpsymphony/src/SYMPHONY/SYMPHONY/symphony.pc
prefix=/tmp/RtmpDgQW2c/R.INSTALL2f0e230a700c/lpsymphony/src/SYMPHONY
exec_prefix=${prefix}
libdir=${exec_prefix}/lib64
includedir=${prefix}/include/coin

Name: SYMPHONY
Description: SYMPHONY MILP Solver Framework
URL: https://projects.coin-or.org/SYMPHONY
Version: 5.6.10
Libs: -L${libdir} -lSym  -lgomp
Cflags: -I${includedir} -fopenmp
Requires: cgl osi-clp coinutils osi
$

Unfortunately this pkgconfig directory is not referenced in $PKG_CONFIG_PATH.  Any idea where this problem comes from and how to fix it?  Spontaneously I'd classify this as a bug in the installer.

Cheers

frank

 

ADD COMMENTlink modified 20 months ago by vladislav.kim10 • written 21 months ago by sunnetau0
Answer: biocLite("lpsymphony") consistently fails with linker errors (can't find static
0
gravatar for vladislav.kim
20 months ago by
Germany
vladislav.kim10 wrote:

Dear Frank,

I can't reproduce this installation error. The `prefix` directory is one of the first variables to be set; it is passed on to the configure script and subsequently passed to all configure/Makefile scripts. As basic as it is, I am pretty sure that the `prefix` is carried over correctly by Autotools when config files and Makefiles are created.

 

Are you sure that the two `symphony.pc` files that you output here were created during the same installation attempt? 

 

What OS, version of R/gcc/g++/autoconf/automake are you using? Perhaps, you can simply e-mail me the output / log file of your compilation.

 

ADD COMMENTlink written 20 months ago by vladislav.kim10
Please log in to add an answer.

Help
Access

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.
Powered by Biostar version 16.09
Traffic: 256 users visited in the last hour