problemas de máquinas virtuais montar janelas compilador diretório

Lembre-se o processo de resolução de um problema, basta olhar para a partir do conhecimento de linux.

O problema é este, há um código no compilador servidor da empresa não é problema, então sinta-se muitas vezes passam código é compilado no servidor um pouco de dificuldade, eu queria criar um ambiente de construção em sua própria máquina virtual. Depois de configurar o ambiente, acessado via montado diretamente em uma máquina virtual sob o código em janelas nativas compilados, mas compilado.

O problema pode ser simplificado de tal maneira um, há um CPP chamado Termios.cpp, seu código contém termios.h este arquivo de cabeçalho, que contém o termios.h termios.h. Termios.cpp e termios.h seu próprio código, termios.h é a cabeça do sistema de arquivos, não me pergunte porque eu uso o mesmo nome, o código legado anterior ~~~. Em Termios.cpp que usam macros, como a B9600 e similares, em um erro de tempo de máquina de compilação virtual não pode encontrar a definição da macro, mas em servidores da empresa compilar corretamente. Pesquisar termios.h segue :( servidores da empresa e máquinas virtuais resultados semelhantes)

Analisando as referências do programa são /usr/include/termios.h, abra o arquivo encontrado no arquivo contém o bits / termios.h, ou seja /usr/include/x86_64-linux-gnu/bits/termios.h, neste documento há definições de macro e similares, tais como B9600. Virtuais conteúdo das máquinas dentro de documentos, também, porque o erro do compilador é? O primeiro suspeito ponto dentro da máquina virtual que não contém /usr/include/termios.h, "qztest" Este programa determina o conteúdo de impressão não contém este arquivo de cabeçalho adicionando # erro no cabeçalho do arquivo. É termios.h incluído em outros diretórios? Busca por gcc olhar caminho improvável (caminho de pesquisa, veja meu artigo https://blog.csdn.net/wuzhidefeng/article/details/76854655 ), mas não se preocupe, em outros diretórios também adicionar um erro # "qztest" não encontrou tal macro um que contém esses cabeçalhos. Mas quando compilador gcc não é capaz de encontrar o arquivo de cabeçalho que faz referência a um programa no final é onde o primeiro documento é?

comando útil veio, g ++ -M comando. Pelo g ++ -M Termios.cpp -I ../inc/ -I ../../globalinclude/ -std = c ++ 11 | grep termi compilados separadamente sobre este CPP para vê-lo no uso final para que os arquivos de cabeçalho, os resultados como se segue:

Os resultados mostram que encontrou ../inc/termios.h, mas apenas para este diretório termios.h, este documento não termios.h ah. Vai encontrar no diretório e os arquivos não são encontrados, é gcc não diferencia maiúsculas de minúsculas? ah razoável. Tente cópia termios.h em um Termios1.h, e depois incluído no Termios.cpp em Termios1.h, reutilização g ++ -M ainda encontrou ../inc/termios.h. O termios.h renomeado, recompilação, antes de adicionar o erro # "qztest" impresso. Termios.h termios.h parece ser tão auto-suficiente.

Então não montar a propósito, basta copiar toda a máquina virtual dentro do código de recompilar, não há erro, compilar com êxito.

Conclusão: sob o código de acesso janelas no ubuntu montar, gcc tempo de compilação pode ser enganosa, case-insensitive (Para ser mais específico razões profundas por trás do livre e, em seguida, chegar ao fundo)

Lição: 1, nomeação de arquivos para regular, não se envolver em tais como nome do arquivo, apenas no caso da mesma coisa, e não arquivos de sistema e nomes duplicados

           2, não tente acessar arquivos de plataforma cruzada diretamente, você pode copiá-lo e, em seguida, o acesso

Publicado 12 artigos originais · ganhou elogios 4 · vê 20000 +

Acho que você gosta

Origin blog.csdn.net/wuzhidefeng/article/details/105298654
Recomendado
Clasificación