Finding Information for C/C++ Library on Linux
2014-10-30 by terryoy, in guides
Developing on Linux often needs shared libraries most of the time. Below is a few references for finding the information about the libraries you are dealing with.
1. Naming Convention
All C standard libraries on linux has the name convention “libxxx”. If you search packages of a library, you can use the (debian) command below to look for it:
$ apt-cache search libxxx
2. Library Packages
Usually, there are three packages of a library you could deal with.
- libxxx - this is the binary package of the shared library, usually has a “lib
.so. ” file on the path /usr/lib/ or /usr/local/lib. It is also needed at runtime.
- libxxx-dev - this is the package which enables you to compile and link the library.
- libxxx-dbg - this is the package which contains the debug symbols for debugging the program. where the files are usually installed at “/usr/lib/debug/”.
If you want to know what files are installed on you system of a package, below are a few commands to do so:
$ dpkg-query -L <package_name> $ dpkg-query -c <.deb_file> # if you want to check files without installing the package # use the apt-file program(it will cache the file lists of all packages) $ apt-file update $ apt-file list <package_name>
3. List Libraries on Your System
Below command can list all the share libraries and their locations, so you could whether a libray is installed and registered on which path.
$ ldconfig -p # find a library(SDL) for example $ ldconfig -p | grep -i sdl
ld program, it searches “/usr/lib/” for libraries by default, but it also include the paths defined in “/etc/ld.so.conf” and “/etc/ld.so.conf.d/”.
4. Checking The Information of Library Files
A library usually contains two parts: static(.a) and shared(.so). You can check the both parts with the commands below:
# listing object files in static (archive) library $ ar tf /usr/lib/i386-linux-gnu/libSDL2.a SDL.o SDL_assert.o SDL_error.o SDL_hints.o SDL_log.o ... # listing symbols in object files(.o), archive library(.a), and shared library(.so) $ nm object.o $ nm lib.a $ nm -D lib.so $ nm --dynamic lib.so
5. Development Reference
Usually the “-dev” package contains some documentation or example files under path “/usr/share/doc/lib
# open the documentation home page(xdg-open is a general command to open file, you can replace it with "iceaweasel" etc.) $ xdg-open /usr/share/doc/libusb-dev/html/index.html # extract the examples $ tar -zxvf /usr/share/doc/libsdl2-dev/examples/examples.tar.gz
6. More Information
Static, Shared Dynamic and Loadable Linux Libraries
Program Library HOWTO