Welcome to the Linux Foundation Forum!

How to capture the dynamic libraries used by a container?


Hi, I'm new to libelf, and I have two questions:

I know it is possible to use libelf to get the dynamic libraries required by an ELF binary. I would like to know if besides the name of the library, it is possible to obtain the path where they are located.

I would also like to know if it is possible to get information from the dynamic libraries used by programs running inside a container, without having to run libelf inside the container.


  • afmorielo

    Before I answer your question I would like to point out that although I am not familiar with libelf, you could probably perform the operation you mentioned using the readelf utility in Linux. It is available by default in my PopOS! box and probably on Ubuntu aswell. So I am guessing with libelf you would also get something like this (/bin/ps is just an example):

    $ readelf -d /bin/ps

    Marcar o Tipo de Nome/Valor
    0x0000000000000001 (NEEDED) Shared library: [libprocps.so.8]
    0x0000000000000001 (NEEDED) Shared library: [libdl.so.2]
    0x0000000000000001 (NEEDED) Shared library: [libc.so.6]

    Your first question is: "How to obtain the path where the shared libraries are located?"
    My answer is: just use the search utility for your operating system. You already have the names, it is as simple as using the search bar in Windows or the find command in Linux to get their location in the filesystem. For me, libprocps.so.8 was found in /usr/lib/x86_64-linux-gnu/

    Your second question is: "How to get information from dynamic libraries running insde a container without running the same operation on them?"
    My answer is: you can't. But maybe you could share the binaries between container and host, like I explained in an answer to another question here: https://forum.linuxfoundation.org/discussion/860111/how-does-the-use-of-dynamic-libraries-shared-objects-work-in-a-container#latest


Upcoming Training