Esse é sobre ferramentas de linha de comando em geral, mostra várias utilidades legais, acho que a primeira lição fala sobre coisas bem básicas como usar ls
e cd
pra listar e navegar em pastas.
Pra compilar com linha de comando em um Linux ou macOS da vida, tu usa um programa como ogcc
(o GNU C Compiler).
Por exemplo: gcc main.c -o executavel
vai compilar e linkar o teu programa chamado main.c
, e gerar a saída no arquivo executavel
, que tu pode rodar com ./executavel
(assumindo que esteja na pasta onde o programa foi gerado; o ./
quer dizer "nesta pasta"). Em Linux e macOS tu não precisa da extensão .exe
nem nada assim pra rodar programas, pode rodar qualquer um que seja marcado como executável. Com tipos abstratos de dados, tu vai criar teus próprios arquivos .h
e outros .c
além do principal, e daí vai rodar algo como gcc main.c binary_tree.c stack.c
pra compilar os arquivos em arquivos "objeto" e linkar eles em um executável. Existem também makefiles, que são scripts pra compilar os objetos em determinada ordem de dependência entre eles e só condicionalmente ao caso do código-fonte de cada dependência não ter mudado, mas acho que isso já entra no escopo de tu querer de fato construir software com C ou C++ e não somente usar elas como ferramentas de aprendizado. Mas são úteis quando a tua compilação é mais complexa, por exemplo, se tu quer adicionar uma biblioteca multimídia pra fazer jogos simples, tal como SDL.
Aliás, quando tu estiver familiarizado com essas noções de objetos, e linkar objetos pra criar executáveis, e compilar os objetos em si, e finalmente a noção de que esse programa é colocado em memória e executado instrução por instrução, essas noções vão ser aplicáveis pra qualquer coisa que execute código que tu possa pensar, algo que pra muita gente é magia oculta: CPU de computadores desktop, o teu celular, a tua geladeira, a ECU do teu carro, o teste de gravidez eletrônico da tua namorada... tudo isso executa código que provavelmente foi feito em C (ou talvez C++, ou talvez, mas menos provável, feito em assembly). É "fácil" e dá uma sensação de segurança olhar pra linguagens de alto nível como abstrações feitas sobre C ou C++, mas é mais difícil vir somente delas e ter a mínima noção de como foram implementadas a mais baixo nível.
Uuh, enfim. lol