Questão de Sistemas Operacionais — Linux — VUNESP 2023
- Código
- vu197277
- Banca
- VUNESP
- Órgão
- UNICAMP
- Ano
- 2023
- Cargo
- PTIC ( )
- Amakefile
- Bmaker
- Cmakeconfig
- Dmakespec
- Emakedef
GabaritoA — makefile
Gabarito: letra A. O utilitário make, amplamente utilizado em ambientes Linux/Unix para automatizar a compilação de projetos, procura por padrão um arquivo chamado makefile (ou Makefile), que contém as regras e dependências para gerar os artefatos finais, como executáveis. As demais alternativas (maker, makeconfig, makespec, makedef) não correspondem ao nome padrão desse arquivo de configuração.
O make é uma ferramenta de automação de build que existe desde os primórdios do Unix e é essencial no desenvolvimento de software, especialmente em projetos escritos em linguagens como C e C++. Ele funciona lendo um arquivo de descrição que define regras: cada regra especifica um alvo (target), as dependências (pré-requisitos) e os comandos necessários para construir o alvo a partir das dependências. O grande diferencial do make é sua capacidade de verificar timestamps: se um arquivo de dependência foi modificado mais recentemente que o alvo, o make reexecuta os comandos da regra; caso contrário, ele considera o alvo atualizado e não faz nada. Isso evita recompilações desnecessárias e acelera drasticamente o ciclo de desenvolvimento em projetos grandes.
O arquivo que o make procura por padrão é o makefile (ou Makefile, com 'M' maiúsculo, que é a convenção mais comum em projetos). A busca segue uma ordem específica: o make procura por GNUmakefile, depois makefile e, por fim, Makefile no diretório atual. Na prática, a convenção mais adotada é Makefile, mas o nome makefile (minúsculo) também é reconhecido e é o que a questão cobra. É possível especificar um arquivo com nome diferente usando a opção -f (por exemplo, make -f meu_arquivo.mk), mas, sem essa opção, o comportamento padrão é a busca pelos nomes citados.
A pegadinha desta questão é puramente de memorização do nome do arquivo. A banca oferece alternativas que parecem plausíveis por começarem com "make", mas que não existem no contexto do utilitário. O candidato que conhece o básico do make não tem dificuldade, mas quem nunca viu a ferramenta pode ser tentado a escolher uma opção que soe como um "arquivo de configuração" genérico, como makeconfig. A distinção crucial é que makefile é o nome padrão e consagrado para o arquivo de regras do make, enquanto os outros nomes não têm significado no ecossistema da ferramenta.
Para fixar: o make é uma ferramenta de automação de build, e o makefile é o arquivo que descreve como construir o projeto. Essa relação é análoga a outras ferramentas de build modernas, como o pom.xml do Maven (Java), o package.json do npm (Node.js) ou o CMakeLists.txt do CMake — cada uma tem seu arquivo de configuração padrão, e o make tem o makefile. Guarde essa associação e a questão se resolve em segundos.
O utilitário make procura, por padrão, pelo arquivo makefile (ou Makefile) no diretório atual. Esse arquivo contém as regras de compilação e linkagem que determinam como os arquivos-fonte se transformam em executáveis ou outros artefatos. É exatamente o que o enunciado descreve: um arquivo de informações que determina como os arquivos devem ser gerados.
maker não é um nome de arquivo reconhecido pelo make. Não existe nenhuma convenção ou documentação do utilitário que utilize esse nome. O candidato pode confundir com a ideia de "algo que faz" (to make), mas não corresponde a nenhum arquivo real.
makeconfig parece um nome plausível para um arquivo de configuração, mas não é o nome padrão usado pelo make. O make não procura por makeconfig; ele procura por makefile/Makefile. A confusão aqui é com a ideia genérica de "configuração", mas o make usa um nome específico e consagrado.
makespec não é um nome de arquivo utilizado pelo make. Não há referência a esse nome na documentação da ferramenta. A terminação "spec" pode lembrar arquivos de especificação de outros contextos (como .spec do RPM), mas não se aplica ao make.
makedef também não é um nome de arquivo padrão do make. A terminação "def" pode lembrar arquivos de definição (como .def do Windows), mas não tem relação com o utilitário make no Linux.
Gabarito: letra A
Link permanente: /questoes/vu197277