Este artigo tem como objetivo dar uma pequena noção de como utilizar a ferramenta libtool para gerar uma biblioteca dinâmica, os famosos libalgumacoisa.so. Isso permite que você linke várias funções que são usadas em vários códigos numa mesma biblioteca.
Agora vamos para a parte mais interessante do artigo, a compilação e link. Vamos então focar na seção "all" do Makefile visto na página anterior.
A primeira regra que é um for, serve para compilar todos os arquivos em um só comando, não precisando repetir várias vezes o comando. O trecho:
echo " [CC] $$x -> `basename $$x .c`.o"
fará apenas com que a saída da compilação de cada arquivo seja parecido com:
[CC] fonte.c -> fonte.o
Para quem está acostumado com o make do kernel do Linux, sim, me baseei nele para criar essa saída, que achei bastante agradável.
O próximo comando:
libtool --silent --mode=compile gcc -c $$x
é que fará o verdadeiro trabalho. Usaremos o libtool no modo compile para apenas criar os objetos do mesmo, que têm extensão .lo. O gcc por sua vez gerará o código objeto .o, como é de costume. A flag --silent do libtool apenas fará com que o mesmo não apresente saídas.
fará com que o libtool, agora em modo link, faça a ligação entre seus fontes para criar a biblioteca libteste.la, que também já foi definido em -rpath a sua pasta de instalação, que logicamente pode ser alterada.
Para mais informações quanto às flags, recomendo consultar man libtool, ou então man gcc.