[arch-general] build package from source and shared libraries issue

arnaud gaboury arnaud.gaboury at gmail.com
Fri Sep 25 10:46:20 UTC 2015


I am scratching my head since a week now and can't figure out how to
solve my issue.

Here is the situation:

1- I have installed parallel_studio_xe from Intel with the AUR package[0]
2- /etc/ld.sconf.so has all the needed .conf file to feed correctly my
 ld.so.cache
2- I build R package[1] from source with the following script. The
goal is to build R with intel MKL shared libraries and gcc compiler.
-----------------------
source /opt/intel/mkl/bin/mklvars.sh intel64

_icclibpath=/opt/intel/composerexe/compiler/lib/intel64/
_mkllibpath=$MKLROOT/lib/intel64/
_omp_lib=/opt/intel/lib/intel64

MKL=" -L${MKLROOT}/lib/intel64 \
    -Wl,--start-group \
    -lmkl_gfl_ilp64 \
    -lmkl_core \
    lkml_intel_thread \
    -Wl,--end-group \
    -liomp5 -ldl -lpthread -lm"

export LDFLAGS="${LDFLAGS} -L${_icclibpath}"

export CFLAGS="-DMKL_ILP64 -m64 -I${MKLROOT}/include"
export CXXFLAGS="-DMKL_ILP64 -m64 -I${MKLROOT}/include"
export FFLAGS="-DMKL_ILP64 -m64 -I${MKLROOT}/include"
export FCFLAGS="-DMKL_ILP64 -m64 -I${MKLROOT}/include"

./configure  --prefix=/usr \
--libdir=/usr/lib \
      --sysconfdir=/etc/R \
      --datarootdir=/usr/share \
      rsharedir=/usr/share/R/ \
      rincludedir=/usr/include/R/ \
      rdocdir=/usr/share/doc/R/ \
      --with-x \
      --enable-R-shlib \
      --with-blas="$MKL" \
      --with-lapack \
      F77=${_F77} \
      FC=${_FC} \
      LIBnn=lib

make -j4

-------------------------------------------------------------
from build package:
$ ldd bin/exec/R
linux-vdso.so.1 (0x00007ffd707b4000)
libR.so => /usr/lib/R/lib/libR.so (0x00007f909d4e2000)
libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007f909d2c5000)
libc.so.6 => /usr/lib/libc.so.6 (0x00007f909cf21000)
libmkl_gf_lp64.so => /opt/intel/mkl/lib/intel64/libmkl_gf_lp64.so
(0x00007f909c84d000)
libmkl_core.so => /opt/intel/mkl/lib/intel64/libmkl_core.so (0x00007f909ace0000)
libmkl_gnu_thread.so =>
/opt/intel/mkl/lib/intel64/libmkl_gnu_thread.so (0x00007f9099f89000)
libdl.so.2 => /usr/lib/libdl.so.2 (0x00007f9099d85000)
libimf.so => /opt/intel/lib/libimf.so (0x00007f90998ca000)
libm.so.6 => /usr/lib/libm.so.6 (0x00007f90995cc000)
............................
libintlc.so.5 => /opt/intel/lib/libintlc.so.5 (0x00007f90976df000)
libgcc_s.so.1 => /usr/lib/../lib/libgcc_s.so.1 (0x00007f90974c9000)
libncursesw.so.6 => /usr/lib/libncursesw.so.6 (0x00007f909725c000)
libicudata.so.55 => /usr/lib/libicudata.so.55 (0x00007f90957a6000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007f9095424000)
-----------------------------------
Fine, I can see some shared intel libraries.

3- Now I build same package on my systemd nspawn container, Fedora 22.
I use same script, same ld.so conf files, intel parallel studio on
same path (/opt/intel).
4- from build folder:
linux-vdso.so.1 (0x00007ffe3d9de000)
libR.so => /usr/lib64/R/lib/libR.so (0x00007f1061d6c000)
libgomp.so.1 => /lib64/libgomp.so.1 (0x00007f1061b3b000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f106191f000)
libc.so.6 => /lib64/libc.so.6 (0x00007f106155e000)
libblas.so.3 => /lib64/libblas.so.3 (0x00007f1061305000)
libgfortran.so.3 => /lib64/libgfortran.so.3 (0x00007f1060fda000)
libm.so.6 => /lib64/libm.so.6 (0x00007f1060cd1000)
libquadmath.so.0 => /lib64/libquadmath.so.0 (0x00007f1060a92000)
libreadline.so.6 => /lib64/libreadline.so.6 (0x00007f1060848000)
libtre.so.5 => /lib64/libtre.so.5 (0x00007f1060637000)
libpcre.so.1 => /lib64/libpcre.so.1 (0x00007f10603c7000)
liblzma.so.5 => /lib64/liblzma.so.5 (0x00007f10601a1000)
libbz2.so.1 => /lib64/libbz2.so.1 (0x00007f105ff90000)
libz.so.1 => /lib64/libz.so.1 (0x00007f105fd7a000)
librt.so.1 => /lib64/librt.so.1 (0x00007f105fb72000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f105f96d000)
libicuuc.so.54 => /lib64/libicuuc.so.54 (0x00007f105f5dc000)
libicui18n.so.54 => /lib64/libicui18n.so.54 (0x00007f105f185000)
/lib64/ld-linux-x86-64.so.2 (0x00005610cd111000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f105ef6d000)
libtinfo.so.5 => /lib64/libtinfo.so.5 (0x00007f105ed43000)
libicudata.so.54 => /lib64/libicudata.so.54 (0x00007f105d317000)
libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f105cf95000)
----------------------------------------------------

As you can see, no links at all to any Intel shared libraries.

I am looking for advices/hints why I don't have the same linking
libraries on both systems. I have tried to look everywhere I could,
changed many and many settings/variables, I still can't get same
result about shared libraries.
I must forget or do something wrong, but no idea what. My building
environment shall differ at some point.

The config.log are nearly the same on the two distro, except for this:

On Fedora:
-------------------------------------------------
Configured with: ../configure --enable-bootstrap --enable-languages=c,c+$.......
---------------------------------------------------------

On Arch:
------------------------------------
Configured with: /build/gcc-multilib/src/gcc-5.2.0/configure ......

Thank you for any hints and where to look to compare build environment diff.


[0]https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=intel-parallel-studio-xe
[1]https://www.archlinux.org/packages/extra/i686/r/
--


More information about the arch-general mailing list