1.

What Is This Business With .a And .so Libraries In The Directory Lib?

Answer»

When SCIP builds the binary, it needs to link with the corresponding libraries, i.e., its own libraries and those of an LP-solver. There are usually two ways to distribute a library (on UNIX SYSTEMS). In the first (with suffix ".a"), the library is linked statically to SCIP; this MEANS that all information is packed into the binary. In the second way (with suffix ".so"), the library is a shared library. In this case, the code of the library is not inserted into the binary itself, but is loaded at runtime. This has the advantage that the binaries are smaller, but it comes at the cost that you have to make sure that the library is found at runtime. (SCIP adds rpath information containing the path to the shared libraries to the binary; this usually allows finding these libraries at runtime. If this does not work, for most systems it suffices to put the path of the library into the LD_LIBRARY_PATH environment variable).

There are compiler-dependent preferences which version should be INCLUDED if both a static and a shared version of the same library are available. In order to avoid confusion, SCIP separates shared from static libraries into the directories "lib/static" and "lib/shared" when using the Makefile system. Note that some LP-solvers are only shipped with a shared version.

When SCIP builds the binary, it needs to link with the corresponding libraries, i.e., its own libraries and those of an LP-solver. There are usually two ways to distribute a library (on UNIX systems). In the first (with suffix ".a"), the library is linked statically to SCIP; this means that all information is packed into the binary. In the second way (with suffix ".so"), the library is a shared library. In this case, the code of the library is not inserted into the binary itself, but is loaded at runtime. This has the advantage that the binaries are smaller, but it comes at the cost that you have to make sure that the library is found at runtime. (SCIP adds rpath information containing the path to the shared libraries to the binary; this usually allows finding these libraries at runtime. If this does not work, for most systems it suffices to put the path of the library into the LD_LIBRARY_PATH environment variable).

There are compiler-dependent preferences which version should be included if both a static and a shared version of the same library are available. In order to avoid confusion, SCIP separates shared from static libraries into the directories "lib/static" and "lib/shared" when using the Makefile system. Note that some LP-solvers are only shipped with a shared version.



Discussion

No Comment Found