static compilation

Moderators: cyao, soliday

Post Reply
blanco-garcia
Posts: 68
Joined: 29 Oct 2021, 10:41

static compilation

Post by blanco-garcia » 08 Mar 2023, 05:47

Dear all,

I have compiled elegant successfully in the login node of a server, however, when using elegant in other nodes through slurm there are several libraries that are not installed, for example:

Code: Select all

tcl-8.5.13-8.el7.x86_64
package wget is not installed
subversion-1.7.14-14.el7.x86_64
gzip-1.5-10.el7.x86_64
tar-1.26-35.el7.x86_64
make-3.82-24.el7.x86_64
package rpmdevtools is not installed
rpm-build-4.11.3-43.el7.x86_64
gcc-4.8.5-39.el7.x86_64
gcc-c++-4.8.5-39.el7.x86_64
gcc-gfortran-4.8.5-39.el7.x86_64
zlib-devel-1.2.7-18.el7.x86_64
package gd-devel is not installed
libpng-devel-1.5.13-7.el7_2.x86_64
package libtiff-devel is not installed
package lapack-devel is not installed
package blas-devel is not installed
gsl-devel-1.15-13.el7.x86_64
package motif-devel is not installed
package libXaw-devel is not installed
package ncurses-devel is not installed
package readline-devel is not installed
libXt-devel-1.1.5-3.el7.x86_64
package libXp-devel is not installed
package tcl-devel is not installed
package tk-devel is not installed
tcsh-6.18.01-16.el7.x86_64
package python-devel is not installed
package python3-devel is not installed
hdf5-devel-1.8.12-7.el7.x86_64
I wonder if there is a way to do a static build of epics, elegant and Pelegant to avoid this problem. Otherwise I will have to explore other solutions like a container or others.

Best regards,
o

soliday
Posts: 390
Joined: 28 May 2008, 09:15

Re: static compilation

Post by soliday » 08 Mar 2023, 09:47

Can you run "ldd Pelegant" and check which shared libraries are missing? This list that you sent was all the packages required to build elegant, not to run it.

blanco-garcia
Posts: 68
Joined: 29 Oct 2021, 10:41

Re: static compilation

Post by blanco-garcia » 08 Mar 2023, 11:19

Code: Select all

        linux-vdso.so.1 =>  (0x00007ffdd21df000)
	libgsl.so.0 => /lib64/libgsl.so.0 (0x00007f3c107f4000)
	libgslcblas.so.0 => /lib64/libgslcblas.so.0 (0x00007f3c105b7000)
	libz.so.1 => /lib64/libz.so.1 (0x00007f3c103a1000)
	liblapack.so.3 => not found
	libblas.so.3 => not found
	libgfortran.so.3 => /lib64/libgfortran.so.3 (0x00007f3c1007f000)
	libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f3c0fe63000)
	librt.so.1 => /lib64/librt.so.1 (0x00007f3c0fc5b000)
	libdl.so.2 => /lib64/libdl.so.2 (0x00007f3c0fa57000)
	libstdc++.so.6 => /usr/local/applications/tools/gcc/9.2.0/lib64/libstdc++.so.6 (0x00007f3c0f67e000)
	libm.so.6 => /lib64/libm.so.6 (0x00007f3c0f37c000)
	libgomp.so.1 => /usr/local/applications/tools/gcc/9.2.0/lib64/libgomp.so.1 (0x00007f3c0f147000)
	libgcc_s.so.1 => /usr/local/applications/tools/gcc/9.2.0/lib64/libgcc_s.so.1 (0x00007f3c0ef2f000)
	libc.so.6 => /lib64/libc.so.6 (0x00007f3c0eb61000)
	libsatlas.so.3 => /usr/lib64/atlas/libsatlas.so.3 (0x00007f3c0df14000)
	libquadmath.so.0 => /usr/local/applications/tools/gcc/9.2.0/lib64/libquadmath.so.0 (0x00007f3c0dcce000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f3c10c1d000)
	linux-vdso.so.1 =>  (0x00007ffc869aa000)
	libgsl.so.0 => /lib64/libgsl.so.0 (0x00007f5b10286000)
	libgslcblas.so.0 => /lib64/libgslcblas.so.0 (0x00007f5b10049000)
	libz.so.1 => /lib64/libz.so.1 (0x00007f5b0fe33000)
	liblapack.so.3 => not found
	libblas.so.3 => not found
	libgfortran.so.3 => /lib64/libgfortran.so.3 (0x00007f5b0fb11000)
	libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f5b0f8f5000)
	librt.so.1 => /lib64/librt.so.1 (0x00007f5b0f6ed000)
	libdl.so.2 => /lib64/libdl.so.2 (0x00007f5b0f4e9000)
	libmpi_cxx.so.40 => /usr/local/applications/tools/openmpi/4.1.1/lib/libmpi_cxx.so.40 (0x00007f5b0f2cf000)
	libmpi.so.40 => /usr/local/applications/tools/openmpi/4.1.1/lib/libmpi.so.40 (0x00007f5b0efb7000)
	libstdc++.so.6 => /usr/local/applications/tools/gcc/9.2.0/lib64/libstdc++.so.6 (0x00007f5b0ebde000)
	libm.so.6 => /lib64/libm.so.6 (0x00007f5b0e8dc000)
	libgomp.so.1 => /usr/local/applications/tools/gcc/9.2.0/lib64/libgomp.so.1 (0x00007f5b0e6a7000)
	libgcc_s.so.1 => /usr/local/applications/tools/gcc/9.2.0/lib64/libgcc_s.so.1 (0x00007f5b0e48f000)
	libc.so.6 => /lib64/libc.so.6 (0x00007f5b0e0c1000)
	libsatlas.so.3 => /usr/lib64/atlas/libsatlas.so.3 (0x00007f5b0d474000)
	libquadmath.so.0 => /usr/local/applications/tools/gcc/9.2.0/lib64/libquadmath.so.0 (0x00007f5b0d22e000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f5b106af000)
	libopen-rte.so.40 => /usr/local/applications/tools/openmpi/4.1.1/lib/libopen-rte.so.40 (0x00007f5b0cf78000)
	libopen-orted-mpir.so => /usr/local/applications/tools/openmpi/4.1.1/lib/libopen-orted-mpir.so (0x00007f5b0cd76000)
	libopen-pal.so.40 => /usr/local/applications/tools/openmpi/4.1.1/lib/libopen-pal.so.40 (0x00007f5b0ca66000)
	libudev.so.1 => /lib64/libudev.so.1 (0x00007f5b0c850000)
	libpciaccess.so.0 => /lib64/libpciaccess.so.0 (0x00007f5b0c646000)
	libutil.so.1 => /lib64/libutil.so.1 (0x00007f5b0c443000)
	libcap.so.2 => /lib64/libcap.so.2 (0x00007f5b0c23e000)
	libdw.so.1 => /lib64/libdw.so.1 (0x00007f5b0bfed000)
	libattr.so.1 => /lib64/libattr.so.1 (0x00007f5b0bde8000)
	libelf.so.1 => /lib64/libelf.so.1 (0x00007f5b0bbd0000)
	liblzma.so.5 => /lib64/liblzma.so.5 (0x00007f5b0b9aa000)
	libbz2.so.1 => /lib64/libbz2.so.1 (0x00007f5b0b79a000)

soliday
Posts: 390
Joined: 28 May 2008, 09:15

Re: static compilation

Post by soliday » 08 Mar 2023, 11:34

Okay, the only issue is the lapack libraries being in a unique location.

This can probably be solved with modifying the oag/apps/src/elegant/Makefile.OAG with:
LAPACK_LIBDIR=/ccc/products/lapack-3.9.1/gcc--11.1.0/default/lib
elegant_LDFLAGS += -L$(LAPACK_LIBDIR) -Wl,-rpath,$(LAPACK_LIBDIR) -lapack -blas
Pelegant_LDFLAGS += -L$(LAPACK_LIBDIR) -Wl,-rpath,$(LAPACK_LIBDIR) -lapack -blas

I took a guess at where your custom lapack libraries are with LAPACK_LIBDIR. The -rpath option tells the executable where to find the library when the program is run.

As an alternative, you could try setting LD_LIRARY_PATH=/ccc/products/lapack-3.9.1/gcc--11.1.0/default/lib and then rerunning ldd elegant to see if it can find the missing libraries.

blanco-garcia
Posts: 68
Joined: 29 Oct 2021, 10:41

Re: static compilation

Post by blanco-garcia » 17 Mar 2023, 09:01

Dear Soliday,

thank you for your help.
LD_LIBRARY_PATH did not work in our case, but, we loaded the missing libraries through an available module (in our case, an Anaconda module).

I still wonder if elegant and Pelegant could be created in a static build. But, for the moment this issue has been solved.

Best regards,
o

Post Reply