salve salve turma sejam bem-vindos a mais um vídeo aqui do Xavier Cold no curso dominante estruturas de dados 1 e a partir desse vídeo nós estudaremos agora como compilar códigos na linguagem que ser como compilar projetos na linguagens então nós iremos do básico até o avançado tá bom nessa trilha de vídeo-aulas aqui do curso de estruturas de dados Então essa essa esse os próximos vídeos são opcionais Tá mas eu fortemente indico para quem estiver trabalhando com o sistema operacional Linux ou Mac também Provavelmente você que tá trabalhando com o Windows está usando alguma ideia é que já faz toda a compilação para você então talvez esses vídeos não seja muito interessante mas só você que tá no Linux ou Mac Eu recomendo fortemente você acompanha e domine essa arte de compilação nessa articulatórios ao final desses vídeos né sobre esse assunto nós teremos aí um esqueleto de um projeto em ser bem bem robusto tá bem profissional que nós utilizamos esse esqueleto no até o final do curso tá bom então nos próximos vídeos quando nos veremos a nossa primeira estrutura de dados mais complexa Oi gente já vai a partir desse desse projetinho dessa biblioteca de códigos que não teremos um detalhe aqui na descrição desse vídeo você tem um link completo para playlist de todos os cursos de se todos os vídeos esse curso e também o link para o repositório no Git Hub onde você encontra todos os códigos desenvolvidos nesse vídeo e por fim deixa seu like se inscreva no canal compartilhe com seus amigos este vídeo muito bem eu tenho aqui ó cria uma pasta aqui no nosso repositório chamado compilando o código c e eu tenho já uma pasta chamado vídeo 01 porque eu vou dividir os códigos aqui por vídeo tá bom para facilitar o estudo de vocês aqui vídeo 101 o que que eu fiz foi seguinte eu compilei os arquivos que nós trabalhamos no até os vídeos passados ou seja nossa primeira nosso primeiro tipo abstrato de dados que o nosso forte bater e um programinha que usa esse tipo abstrato de dados Eu também coloquei outro tipo abstrato de dados que eu codifiquei que é o my time que basicamente ele traz algumas funções do cômputo de tempo né para medir a performance de trechos de código não entrar muito em detalhes é do que faz ao certo esses arquivos aqui porque estou eu os utilizarei apenas para fins de compilação a fim de hidáticos nesse Toca então o que eu vou fazer aqui pessoal vai ser o seguinte ó eu vou iniciar criando aqui uma subpasta chamada exemplo 01 que eu vou entrar essa pasta e eu vou criar aqui ó não vou nem usar nenhum dos códigos anterior eu vou criar aqui um teste pontos e ou um EP um problema não colocar Teste Ponto você mesmo que vai ser um programa simples na nossa tela Então vai ser um intimem sem nenhum parâmetro e retorne zero eu vou simplesmente dá um putz chamado Hello tá vou mandar colocar um Hello na tela o ponto ele tá dentro da biblioteca de códigos Me responde aí o como pagar Então beleza um código Super simplesinho só para a gente compilar Então como nós iremos desde o comecinho do desse curso para copiar um programa em C no Programa Bem Simples assim que não tem Independência basta que eu chamo meu compilador no caso aqui hoje é cê ia falar GC compila para mim esse programa chamado teste conto sempre e já era para mim uma saída essa saída é o nome do programa né do arquivo binário que você vai estar que você vai gerar então deixa aumentar um pouquinho aqui então você poderia ter qualquer coisa aqui ó qualquer coisa que vai funcionar então ele copia Opa falta um ponto e, aqui ó já deu um erro tem que colocar um ponto e, aqui então se eu voltar agora para compilar ele compilou LS para listar me mostra aqui que nós temos um código binário chamado qualquer coisa e ele funciona então é simples assim se você tiver um programa muito simples a independência basta que você faça isso mas a convenção que nós temos usado aqui nesse nesse curso é e usar o mesmo nome do arquivo mesmo bem cname do do arquivo de contração Só que no caso e sem extensão eu tenho que eu tenho usado isso então será teste sem o pontos e então posso usar o teste e aqui funcionam tem esse exemplo mais simples para você compilar né então rapidamente Deixa eu voltar aqui então recapitulando muito rapidamente já ser compila para mim esse programa né que esse arquivo teste pontos e que tem um programa de uma mim lá dentro e já era para mim um arquivo de saída chamado teste então a gente pode fazer dessa maneira se você não passar nada Pessoal olha só que ele já ele já era para você um arquivo chamado à ponto alto então se você não passar nada não passar o nome do arquivo de saída ele já era para você esse arquivo que se a gente executar também dá o nosso Hello tão bem simplesinho esse caso aqui agora vamos criar um exemplo 2 e onde nesse exemplo 2 e eu vou querer compilar códigos tipos abstratos de dados que eu codifiquei tá não necessariamente nesse momento é é programas que usam esses tipos Tá bom então que eu vou fazer eu vou copiar aqui o flat Vector pontos e pode pagar vou copiar os dois aqui eu tenho isso então para fazer a compilação pessoal basta que eu faço seguinte então eu tenho meu tipo abstrato de dados aqui eu quero compilar esse código aqui né que é o consórcio foi o que está implementando as especificações dos pode extrato de dados que estão no nosso header files arquivo de cabeçalhos nós iremos nos vídeos passados que basta o jeito mais fácil basta que eu chamei o GC aqui e falar gcc compile para mim esse arquivo aqui olho de pontos e só que ele não possui um Amém dentro Então como ele não fosse não é um programa não arquivo de fonte que tem problema eu tenho que passar Flag - E então para eu parar a fragmentos eu tô indicando que eu quero gerar um arquivo eu quero compilar esse arquivo mas não é um arquivo de execução Tá bom não vou ter um programa aqui dentro se é dessa maneira o que vai acontecer aqui aquele por padrão aqui no Linux no gcc ele já era para nós um arquivo chamado com o mesmo base name com um a extensão. Ok seria um objeto Então seria é um código é um código compilado tá bom é um código de máquina binário onde você tem aí é esse tipo abstrato de dados compilado então é como se fosse se você ver os nossos vídeos tipos abstratos de dados é como se fosse Aquele controle remoto do Drne que a gente fala que a gente falou que é o nosso produto fechado nosso código fechado ele mais as especificações que seria o manual desse controle podem ser usado por qualquer um dos programas tá bom sem informar o sócio e Cold Sim a gente passar o código-fonte Então esse são o exemplo mais simples que a gente tem aqui de compilação é de um de um arquivo né de um dia para o extrato de dados que não é um problema continuando aqui pessoal ainda nesse exemplo Note que eu fiz aqui ele já era por padrão esse nome para nós flor de Underline Vector. Ó só que essa diretivas de compilação aqui eu também posso passar um nome desse bom então posso informar que meu áudio pôde - Ode ao tipo de né saída a minha saída pode ser qualquer coisa posso fazer dessa maneira que também ele já era para mim esse código compilado né do meu tipo abstrato de dados com essa com esse nome aqui que pode ser um nome qualquer isso aqui também funciona se você informar isso mas isso também é para funcionar as especificações mais por padrão nós utilizaremos aqui na nossas compilações o quando for comprar um tipo abstrato de dados nós utilizaremos exatamente o mesmo vasilhame com a extensão menos ó é isso Nós faremos nesse nesse nesse curso tá bom vamos criar aqui agora um exemplo 3 o exemplo 3 cont nós somos começar aprofundar um pouquinho mais nesse nesse esquema Veja Bem pessoal vou compilar aqui de novo Nosso os nossos arquivos de os nossos arquivos em nosso tipo abstrato de dados aqui e agora o que eu quero fazer o seguinte ó eu quero gerar aqui por exemplo eu quero fazer o seguinte eu quero gerar uma pasta chamado por exemplo o BJ onde eu colocarei todos os arquivos compilados os meus tipos abstratos de dados Então vou começar a organizar o meu projeto dessa maneira então me afastou DJ Ela será pasta que será encarregado de guardar todos os arquivos.
Ou seja todos os arquivos todos os meus tipos abstratos de dados compilados então agora nossa ideia aqui nós precisamos compilar esse programa esse tipo abstrato de dados aqui esse arquivo ou fraude Vector pontos e ir jogar aqui o objeto compilado aqui no nessa pasta nós podemos fazer isso direto pelo GC Nossa que a gente passa assim ó isso os pontos e lembrando que a gente tem que passar diretivo a menos ser porque não é um arquivo que tem uma nem dentro não é um programa então nesses e compila para mim esse código fonte esse tipo abstrato de dados e jogue e o jogue na pasta objeto então menos o a saída vai ser na pasta BJ com o nome Freud Vector. Ó fazendo assim olha só que bonitão nós temos aqui então nosso nosso apostar fazer assim para mostrar os arquivos então tem esses dois arquivos Não mesmo no mesmo diretório eu tenho uma pasta aqui é um subdiretório que tem os meus arquivos nos meus arquivos. Ó compilado então a ideia que cada tipo abstrato de dados que você desenvolver cê vai colocar todos os pontos né os arquivos compilados você vai colocar aqui dentro dessa pasta Oh e vamos Pouco a Pouco avançando na complexidade aqui da nossa compilação então eu vou voltar aqui eu vou criar um outro diretório outro subdiretório que eu vou chamar de exemplo quatro foi entrar que não exemplo quatro a mesma coisa vou vou copiar os arquivos do meu pode extrato de dados que tá aqui e eu vou criar a pasta o BJ onde eu jogarei todos os arquivos compilados lá né dos meus tipos abstratos de dados mas agora eu quero continuar organizando o meu projeto para isso eu vou criar uma pasta chamada iCloud onde eu pretendo colocar todos os arquivos de cabeçalho ou seja todas as especificações dos meus tipos abstratos de dados eu quero organizar dentro dessa pasta including então para isso que eu vou fazer eu vamos ver agora o meu tipo abstrato de dados de desculpas a especificação é tipo de regra do meu tipo abstrato de dados por um including e agora será que essa compilação aqui vai funcionar a mesma compilação para nós fizemos no exemplo 3 eu quero compilar Então esse arquivo não é fraude Vector pontos e se O que significa que ele não é um arquivo de execução né não é um programa eu vou eu vou gerar o arquivo flor tiver pergunto o que será jogada né Será é gerado na pasta o BJ olha só que que acontece quando eu faço isso pessoal ele tá falando que o meu que na linha 1 coluna 10 do arquivo floating Vector pontos e nós temos um erro fatal que esse arquivo aqui ó floating Vector.
H ele não existe então se eu abrir aqui ó o meu código vou abrir aqui o projeto Se você olhar nós temos aqui na pasta includ o flautim Vector ponta Gálata na pasta inclusive né Deve tá um pouquinho apertadinha mas é tenta ver aí pessoal dar um uma e você tem um flute flute Vector pontos e talvez se mostrar que no terminal fica mais fácil nós temos essa estrutura então nós temos uma pasta includ que o flor Vector. Ágata aqui dentro eu vou tiver pronto cê tá fora tão nível acima na hierarquia acontece que durante a compilação de um tipo abstrato de dados se a gente tem uma dependência por exemplo aqui não for tiver pronto e é nós temos a dependência aqui em cima e nós estamos nós estamos aqui incluindo forte Vector. H acontece aqui se esse arquivo estiver no mesmo diretório que o meu floating Vector pontos e eu não preciso fazer nada o compilador ele já é inteligente o suficiente para buscar Olha eu estou querendo incluir esse arquivo ou tiver pronto HQ um arquivo meu por isso que eu tô passando entre aspas duplas então ele já que ele já procura no mesmo diretório desse arquivo seu ele do pontos e aqui né do for tiver que acontecer ele vai procurar todos os seus inclui diz personalizados todos incluídos que você fez né ou que você está usando aqui que não são padrões do sistema é Lembrando que as bibliotecas padrão do sistema elas possuem isso aqui né o abre e fecha né tem o menor e o maior né o diamante sendo que os arquivos os tipos abstratos seus ou seja os códigos as bibliotecas que você tá fazendo você coloca para incluir esse a abre e" duplas então o que que tá acontecendo aqui durante a compilação ele por padrão vai buscar se esse arquivo está no mesmo diretório que nós o pior que no caso esse diretório acima mas não está mais Então como não está ele não acha e como ele não acha ele dá esse erro de compilação aqui ó que ele não conseguiu achar esse arquivo não foi encontrado então a gente precisa informar o compilador onde que ele pode procurar onde esses arquivos inclusive estão parece a gente tem que passar uma outra diretiva a gente passa o menos exame aqui nós vamos informar que esse arquivo Ele está na pasta includ Então a partir desse momento que nós estamos falando para o compilador aqui olha o gcc compile esse código fonte para mim que ele não é uma Amém ele é um tipo abstrato de dados ele é um não tem um executável e ele e procure também seria usado dependências em clubes procure esses Entulhos aqui dentro dessa pasta including que eu tenho porque pode ser que tenha dependências que esteja dentro da uma vez que você fez isso com Pires e Jerry o código compilado para nós a saída né seja o código compilado chamado flute Vector.
Ó que está na pasta o BJ né colônia que está não coloque bom então é isso que ele faz agora deu certo então durante a compilação ele comprou esse esse arquivo aqui buscando o cinto diz que estão os arquivos de cabeçalho que estão nessa pasta includ é essa pasta chamada including que está aqui no mesmo diretório e depois jogou o arquivo compilado forro de Underline vai ter. Ó Nessa pasta ou beija fosse a gente mandar um triac para ver ó agora deu certo né então agora a gente tem essa compilação aqui então flor Vector tá nesse nível acima fosse vai ter pontos e os ímpios estão aqui o BJ está aqui mas agora eu consegui fazer com que a compilação desce certo então recapitulando até o exemplo 3 né Nós não precisamos Nós não precisamos informar o a pasta onde pode estar os arquivos inclusive porque todos estavam no mesmo diretório se tá no mesmo diretório o compilador ele era inteligente o suficiente para procurar no mesmo diretório arquivos de cabeçalho que podem ser de pendências né do arquivo que você está compilando arquivo pontos e que você está compilando uma vez que você não tem os arquivos. H no mesmo e aqui: e você precisa informar por seu compilador no caso aqui o GC onde ele deve procurar em em qual pasta ele deve procurar esses arquivos.