Como você não sabe o que -c
(arquivo de objeto de compilação) e -o
(especificar arquivo de saída), sugiro começar com uma compilação executável simples. Entenda o que são arquivos de objetos e como eles são colocados juntos.
Continue com as bibliotecas estáticas. Entenda que bibliotecas estáticas são apenas vários arquivos de objetos arquivados juntos. Como eles são especificados para o compilador e como o compilador os encontra.
Então, finalmente, tente os dinâmicos. Entenda que eles estão ligados em tempo de execução. Que você precisa especificar onde eles são encontrados. Que eles são compilados e ligados de uma maneira diferente (você já viu -fPIC
ainda?). Que eles podem depender um do outro. Eles são feras poderosas que podem te morder facilmente:)
E uma maneira fácil de criar bibliotecas estáticas e dinâmicas? Esqueça de escrevê-los manualmente e use o cmake. Se você quiser ir fundo, execute make com VERBOSE=1
, veja os argumentos do compilador e aprenda.