Page 1 of 1

static compilation

Posted: 08 Mar 2023, 05:47
by blanco-garcia
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

Re: static compilation

Posted: 08 Mar 2023, 09:47
by soliday
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.

Re: static compilation

Posted: 08 Mar 2023, 11:19
by blanco-garcia

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)

Re: static compilation

Posted: 08 Mar 2023, 11:34
by soliday
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.

Re: static compilation

Posted: 17 Mar 2023, 09:01
by blanco-garcia
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