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.