The basic concept of use and generation library has two kinds of dynamics and static. Dynamic is usually used. SO is a suffix, static .a is a suffix. For example: libhello.so libhello.a In order to use different versions of libraries in the same system, you can add the version number after the library file name, for example: libhello.so.1.0, because the program connection defaults. SO is the file suffix name. So in order to use these libraries, it is usually used to create a symbolic connection. ln -s libhello.so.1.0 libhello.so.1 ln -s libhello.so.1 libhello.so When using a library to use a static library, the connector finds the function you need to find, and copy them To the execution file, since this copy is complete, once the connection is successful, the static library will no longer need it. However, for the dynamic library, it is not the case. The dynamic library will leave a tag in the execution program 'specifying that this library must first be loaded when the program is executed. Due to dynamic library saving space, the default operation of Linux is first connected to the dynamic library, that is, if there is a static and dynamic library, it is not particularly specified, will be connected to the dynamic library. Now suppose there is a program development package called Hello, it provides a static library libhello.a, a dynamic library libhello.so, a header file hello.h, providing SayHello () this function / * hello.h * / void Sayhello (); there are some documentation. This typical program development package structure 1. Connect to dynamic library Linux default is to connect with dynamic library, the following program Testlib.c uses the SayHello () function in the Hello library /*testlib.c*/ #include