Certifique-se de entender a diferença entre os arquivos de cabeçalho e as bibliotecas.
Arquivos de cabeçalho (como /usr/include/boost/filesystem.hpp) são o que você usa no código-fonte como parte de sua diretiva #include
. O pré-processador do C ++ lê esse arquivo e adiciona um monte de declarações ao seu programa.
Uma biblioteca é uma coleção compilada de várias funções, dados estáticos e outras coisas. Quando você usa o parâmetro -lboost_system
, diz ao compilador "Compile meu programa e vincule-o à biblioteca libboost_system".
Seu vinculador reclama que não consegue encontrar essa biblioteca ( /usr/bin/ld: cannot find -lboost_system
). O motivo provável é que o script ./bootstrap.sh
não instalou o aumento nos diretórios adequados.
A partir daqui, você tem algumas opções.
Se você quiser ficar no Boost-2014.10.tar.gz, está sozinho.
Eu recomendaria a instalação do pacote libboost-dev
. Ele instalará o que quer que seja a versão atual do boost do seu sistema e colocará todos os arquivos nos locais apropriados.
E finalmente: quando você removeu a linha #include
do seu arquivo, funcionou, mas apenas porque o seu programa não usa nenhuma funcionalidade do boost :: system. Se você fosse usar qualquer classe / função de boost, você teria erros de compilação se não tivesse os cabeçalhos adequados incluídos.