[Solved] Building evince locally links to system libraries (and not the libraries are built along with it)

I got the latest release for evince from github.

After that I extracted the archive and built evince using the commands:

> meson           -Dlibhandy:examples=false -Dlibhandy:tests=false -Dlibhandy:vapi=false           -Dlibhandy:glade_catalog=disabled -Dlibhandy:introspection=disabled  --prefix=$(pwd)/installed            _build
> ninja -C _build all
> ninja -C _build install

I can see that this builds the binaries and the libraries as well:

However the binaries link to the system libraries:

[I] shank@arco-zenbook ~/c/r/t/evince-43.1> ldd installed/bin/evince
        linux-vdso.so.1 (0x00007ffeeb5ea000)
        libevview3.so.3 => /usr/lib/libevview3.so.3 (0x00007fb655761000)
        libevdocument3.so.4 => /usr/lib/libevdocument3.so.4 (0x00007fb65572d000)
        libgdk_pixbuf-2.0.so.0 => /usr/lib/libgdk_pixbuf-2.0.so.0 (0x00007fb6556e7000)
        libgobject-2.0.so.0 => /usr/lib/libgobject-2.0.so.0 (0x00007fb655686000)
        libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0x00007fb655547000)
        libgnome-desktop-3.so.20 => /usr/lib/libgnome-desktop-3.so.20 (0x00007fb65550b000)
        libgtk-3.so.0 => /usr/lib/libgtk-3.so.0 (0x00007fb654c00000)
        libgdk-3.so.0 => /usr/lib/libgdk-3.so.0 (0x00007fb655413000)
        libpangocairo-1.0.so.0 => /usr/lib/libpangocairo-1.0.so.0 (0x00007fb655403000)
        libpango-1.0.so.0 => /usr/lib/libpango-1.0.so.0 (0x00007fb654b98000)
        libatk-1.0.so.0 => /usr/lib/libatk-1.0.so.0 (0x00007fb6553d9000)
        libcairo-gobject.so.2 => /usr/lib/libcairo-gobject.so.2 (0x00007fb6553cd000)
        libcairo.so.2 => /usr/lib/libcairo.so.2 (0x00007fb654a74000)
        libgio-2.0.so.0 => /usr/lib/libgio-2.0.so.0 (0x00007fb6548a6000)
        libhandy-1.so.0 => /usr/lib/libhandy-1.so.0 (0x00007fb6547f7000)
        libm.so.6 => /usr/lib/libm.so.6 (0x00007fb65470f000)
        libsecret-1.so.0 => /usr/lib/libsecret-1.so.0 (0x00007fb6546ab000)
        libc.so.6 => /usr/lib/libc.so.6 (0x00007fb6544c4000)
        libgspell-1.so.2 => /usr/lib/libgspell-1.so.2 (0x00007fb6544a2000)
        libgstreamer-1.0.so.0 => /usr/lib/libgstreamer-1.0.so.0 (0x00007fb654353000)
        libgstvideo-1.0.so.0 => /usr/lib/libgstvideo-1.0.so.0 (0x00007fb65428e000)
        libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007fb65426e000)
        libgmodule-2.0.so.0 => /usr/lib/libgmodule-2.0.so.0 (0x00007fb654267000)
        libxml2.so.2 => /usr/lib/libxml2.so.2 (0x00007fb6540ff000)
        ...

Is there a way to make the binaries link to the libraries that are built along with it (in the lib folder)?

Hi, try:

$ export  LD_LIBRARY_PATH=$(pwd):installed/lib

and then, run ldd again. It should prefer the libraries built over the system one.

For the linker, you can pass the parameter at the setup time:

… -Dc_link_flags=-L$(pwd)/installed/lib …

However, at runtime, you will still need to set up LD_LIBRARY_PATH.

1 Like

Thanks! I didn’t know about the -Dc_link_flags option.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.