Erro ao compilar arquivo c++

Entrei para faculdade de Sistemas da informação recentemente e comecei usar linux tmb, mas não estou conseguindo estudar.
Quando vou compilar os arquivos .cpp usando o gcc, recebo a seguinte msg
Fatal error: curses.h ou conio.h arquivo ou diretorio inexistente
Alguém poderia me ajudar, como faço para adicionar ou configurar esses headers.
Caso contrário infelizmente terei que usar o Windows :frowning:

Esses erros acontecem porque você não tem tais bibliotecas instalados. Nesse caso, conio.h é um header do Windows, e o curses.h faz parte do ncurses. Ambas bibliotecas podem ser instalados pelo repositório da sua distro.

Se você usa Ubuntu ou alguma debian based, os pacotes são esses:

sudo apt install libncurses5-dev libncursesw5-dev

Na hora de incluir as bibliotecas no seu arquivo .c, não precisa incluir o conio.h, o curses.h já toma conta disso sozinho.

1 Curtida

Oq exatamente eles tão tentando fazer com esses headers? Pq tem umas frescurinha do Windows que fazem vc ter que incluir esses headers em coisas que no Linux, e Unix em geral, vc não precisaria, então se pah vc nem vai precisar dos headers.

1 Curtida

Vou testar isso, existe uma forma de ver as libs instaladas e onde eu encontro algum doc com as libs disponíveis? Eu gostei muito do linux e nao quero usar Windows mais, mas não posso ficar na mão logo no começo da faculdade.
Se quiserem depois eu posto o código aqui, eu não faço ideia pq é o primeiro bimestre de facul kkk

Todas as libs instaladas ficam na pasta /usr/lib/ e os headers em /usr/include/ é só olhar lá ou usar o gerenciador de pacotes pra pesquisar.
Se quiser mandar o código pra alguém olhar, pode mandar

1 Curtida

@kevin.aro, pode ficar tranquilo que o Linux não vai te deixar na mão nesse quesito. Na universidade em que eu estudei (cursei Ciência da Computação e Mestrado em Informática) todos os PCs são Linux há muitos anos (desde começo dos anos 2000), incluindo os laboratórios de pesquisa e desenvolvimento. A versatilidade que o Linux traz para essas questões é sem comparação com o Windows, independente da linguagem (com exceção talvez das linguagens criadas para o Windows).

O problema que você talvez tenha é a compatibilidade com alguns padrões do Windows. Ajudando amigos meus que estudaram em outras faculdades que utilizam Windows como padrão eu já me deparei com códigos que não compilavam no Linux por utilizarem bibliotecas proprietárias. Já o contrário é muito mais difícil de acontecer porque as libs que estão disponíveis no Linux são as padrões do C++ e são de código-aberto, o que significa que também terão versões para Windows.

Um bom exemplo é um programa em C++ que eu desenvolvo há alguns anos e que nesse ano tive que compatibilizar para o Windows. Bastou eu implementar suporte para o CMake, para conseguir compilar tudo no Windows, e boa, tudo funcionou sem precisar de nenhum outro ajuste.

Ou seja, se por acaso você for fazer trabalhos em grupo e os outros membros desenvolverem em Windows, pode ser que fique mais complicado, tanto pelos scripts de compilação (No Linux o padrão é o GNU Make, e no Windows cada programa tem um padrão) quanto pela incompatibilidade de algumas libs comuns no Windows. Normalmente esses problemas são relativamente fáceis de se contornar, mas é bom saber que existem para avisar aos colegas para evitarem usar essas libs.

Sobre a sua questão de como verificar as libs, o que o Fenrir falou é uma opção e outra é executar o comando: dpkg -l | grep -i "c++". Outra boa alternativa para quando precisar de uma lib específica é rodar o comando: apt search ncurses (trocando ncurse pelo nome da lib). O padrão é que o pacote que você vai precisar instalar é algo como “libNOMEeVERSAO-dev”, ou simplesmente libNOME-dev". Ai basta instalar o pacote com sudo apt install libNOME-dev e pronto!

Qualquer dúvida é só postar aqui que a gente ajuda.
Vlw!

1 Curtida