A questão principal aqui foi a existência de bibliotecas e inclui em /usr/local
que foram compiladas no Precise (12.04).
Ao pesquisar pelos cabeçalhos de desenvolvimento especificados por #include
, gcc
e g++
têm /usr/local/include
maior na lista do que /usr/include
. Portanto, se você tiver os cabeçalhos de desenvolvimento de uma biblioteca em /usr/local/include
e /usr/include
, então o em /usr/local/include
será usado, independentemente da versão . Embora isso possa ter sido bom no Precise, uma vez que as bibliotecas compiladas localmente eram provavelmente versões mais recentes, isso não seria bom em Trusty, quando a versão do sistema da biblioteca seria de uma versão igual ou mais recente da biblioteca que você instalou . Além disso, como as bibliotecas do sistema foram alteradas, os SONAMEs teriam sido alterados e as bibliotecas compiladas localmente teriam que ser recompiladas. Portanto, gcc
/ g++
usaria a versão mais antiga e pode reclamar sobre falta de símbolos e / ou erros de vinculação.
Se uma biblioteca estiver presente nos repositórios principais, geralmente é recomendado usar essa biblioteca em vez de compilá-la por si mesmo (a menos que você precise de uma nova versão de uma biblioteca para desenvolvimento ou correção um inseto); Dessa forma, quando você atualiza seu sistema, essa biblioteca também é atualizada e recompilada para vincular corretamente com as outras bibliotecas.