Criar um arquivo para colocar o caminho da biblioteca sudo vi /etc/ld.so.conf.d/novabib.conf dentro do arquivo coloque o caminho completo do diretorio onde as bibliotecas estão. Por exemplo /home/aluno/bibliotecas
  1. Save and run sudo ldconfig to update the system with this libs.
gcc -fPIC -c nova_bib.c gcc -shared -Wl,-soname,libnovabib.so.1 -o libnova_bib.so.1.0 sudo mv libnova_bib.so.1.0 /usr/local/lib/. sudo ldconfig position-independent code (PIC) -fpic Generate position-independent code (PIC) suitable for use in a shared library, if supported for the target machine. Such code accesses all constant addresses through a global offset table (GOT). The dynamic loader resolves the GOT entries when the program starts (the dynamic loader is not part of GCC; it is part of the operating system). If the GOT size for the linked executable exceeds a machine-specific maximum size, you get an error message from the linker indicating that -fpic does not work; in that case, recompile with -fPIC instead. (These maximums are 8k on the SPARC and 32k on the m68k and RS/6000. The 386 has no such limit.) Position-independent code requires special support, and therefore works only on certain machines. For the 386, GCC supports PIC for System V but not for the Sun 386i. Code generated for the IBM RS/6000 is always position-independent. When this flag is set, the macros "__pic__" and "__PIC__" are defined to 1. -fPIC If supported for the target machine, emit position-independent code, suitable for dynamic linking and avoiding any limit on the size of the global offset table. This option makes a difference on the m68k, PowerPC and SPARC. Position-independent code requires special support, and therefore works only on certain machines. When this flag is set, the macros "__pic__" and "__PIC__" are defined to 2. -shared Produce a shared object which can then be linked with other objects to form an executable. Not all systems support this option. For predictable results, you must also specify the same set of options used for compilation (-fpic, -fPIC, or model suboptions) when you specify this linker option.[1] LD_LIBRARY_PATH Caminho de pesquisa das bibliotecas compartilhadas (variavel de ambiente) Especifica a ordem de pesquisa de bibliotecas compartilhadas (código binário de bibliotecas compartilhadas por aplicações, como a biblioteca C) para o comando ld (Linker GNU) /usr/local/lib:/usr/lib:/lib:/usr/X11R6/lib PATH is for specifying directories of executable programs. LD_LIBRARY_PATH is used to specify directories of libraries. From other point of view, PATH is used primarily by the shell, while LD_LIBRARY_PATH is used by the dynamic loader (usually ld-linux.so). When you use the angle brackets, the compiler searches for the file in the include path list. When you use the double quotes, it first searches the current directory (i.e. the directory where the module being compiled is) and only then it'll search the include path list. http://augustocampos.net/revista-do-linux/005/bibliotecas.html http://mindbending.org/pt/introducao-bibliotecas-em-c http://www.klebermota.eti.br/2013/03/11/usando-o-gcc-e-o-make-para-compilar-lincar-e-criar-aplicacoes-cc/