Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Caminho das pedras para iniciantes em Linux

Por favor, podem me ajudar? Consegui o programa de exemplo abaixo de utilização da libcurl, só que para o " S.O. Windows" através do Visual Studio, Teriam algum "caminho das pedras" para adaptá-lo para "S.O.Linux", compilando via gcc e makefile na máquina virtual Ubuntu instalada conforme o professor instruiu? Grato

PROGRAMA DE EXEMPLO INÍCIO #include "stadfx.h" #include <Windows.h> #include <tchar.h> #include <stdio.h> #include <curl/curl.h>

int main(void) { CURL *curl; CURLcode res;

curl=curl_easy_init(); if(curl){ curl_easy_setopt(curl,CURLOPT_URL,"http://www.cnn.com/"); res=curl_easy_perform(curl); /* always cleanup */ curl_easy_cleanup(curl); } return(0); }

PROGRAMA DE EXEMPLO FIM

5 respostas

Oi Alberto, tudo bem?

Primeiramente, você precisará instalar a biblioteca libcurl no seu sistema Ubuntu. Você pode fazer isso executando o seguinte comando no terminal:

sudo apt-get install libcurl4-openssl-dev

Após a instalação, você pode compilar o programa utilizando o gcc e o makefile. Aqui está um exemplo de como ficaria o código adaptado para Linux:

#include <stdio.h>
#include <curl/curl.h>

int main(void)
{
    CURL *curl;
    CURLcode res;

    curl = curl_easy_init();
    if(curl) {
        curl_easy_setopt(curl, CURLOPT_URL, "http://www.cnn.com/");
        res = curl_easy_perform(curl);
        /* always cleanup */
        curl_easy_cleanup(curl);
    }
    return 0;
}

Agora, para compilar o programa, você pode criar um arquivo makefile com o seguinte conteúdo:

CC=gcc
CFLAGS=-I/usr/include/curl
LDFLAGS=-lcurl

program: main.o
    $(CC) -o program main.o $(LDFLAGS)

main.o: main.c
    $(CC) -c -o main.o main.c $(CFLAGS)

clean:
    rm -f program main.o

Salve esse arquivo como makefile no mesmo diretório do seu programa e, em seguida, execute o seguinte comando no terminal:

make

Isso irá compilar o seu programa e gerar o arquivo executável chamado program. Para executar o programa, basta digitar:

./program

Espero que isso te ajude a adaptar o programa para o Linux!

Indico muito essa formação aqui para você com certeza vai te ajudar a entender Linux melhor!

Um abraço e bons estudos.

Lorena, agradeço as orientações. Quando compilei, apresentou a seguinte mensagem:no rule to make target 'main.c', needed by 'main.o' no rule to make target 'main.c', needed by 'main.o'

#include <stdio.h> #include <curl/curl.h>

int main(void) { CURL *curl; CURLcode res;

curl = curl_easy_init();
if(curl){
    curl_easy_setopt(curl, CURLOPT_URL, "http://www.cnn.com/");
    res = curl_easy_perform(curl);
    /* always cleanup */
    curl_easy_cleanup(curl);
}

return 0;

}

CC=gcc

CFLAGS=-I/usr/include/curl LDFLAGS=-lcurl

program: main.o $(CC) -o program main.o $(LDFLAGS)

main.o: main.c $(CC) -c -o main.o main.c $(CFLAGS)

clean: rm -f program main.o

Alterei o makefile, conforme abaixo e o erro mudou para:missing separator

missing separator

CC=gcc CFLAGS=-I/usr/include/curl LDFLAGS=-lcurl

program: main.o $(CC) -o program main.o $(LDFLAGS)

main.o: main.c $(CC) -c -o main.o main.c $(CFLAGS)

clean: rm -f program main.o

Beleza cara?

A primeira coisa que você precisa fazer é garantir que a biblioteca libcurl esteja instalada em seu sistema Ubuntu. Lorena Garcia já indicou o comando correto para isso, mas vou reforçar:

sudo apt-get install libcurl4-openssl-dev

Este comando instala a biblioteca libcurl necessária para compilar programas que utilizam o libcurl no Ubuntu.

Passo 2: Adaptação do Código para Linux

Agora, é necessário ajustar o código para garantir que ele seja compatível com o ambiente Linux. Aqui está o código adaptado:

#include <stdio.h>
#include <curl/curl.h>

int main(void)
{
    CURL *curl;
    CURLcode res;

    curl = curl_easy_init();
    if(curl) {
        curl_easy_setopt(curl, CURLOPT_URL, "http://www.cnn.com/");
        res = curl_easy_perform(curl);
        /* always cleanup */
        curl_easy_cleanup(curl);
    }

    return 0;
}

Este código é uma versão simplificada e adaptada do seu código original para funcionar no Linux.

Passo 3: Criação do Makefile

O próximo passo é criar um makefile para facilitar o processo de compilação. Seu makefile deve se parecer com o seguinte:

CC=gcc
CFLAGS=-I/usr/include/curl
LDFLAGS=-lcurl

program: main.o
    $(CC) -o program main.o $(LDFLAGS)

main.o: main.c
    $(CC) -c -o main.o main.c $(CFLAGS)

clean:
    rm -f program main.o

Certifique-se de salvar este conteúdo em um arquivo chamado "makefile" no mesmo diretório do seu programa.

Passo 4: Compilação do Programa

Agora, no terminal, navegue até o diretório onde está seu código e o makefile e execute o seguinte comando:

make

Isso compilará o seu programa e gerará um executável chamado "program".

Por fim, para executar o programa, digite o seguinte comando no terminal:

./program

Este comando rodará o executável que você acabou de compilar.

Resolução dos Problemas Apresentados por Alberto

Quanto aos problemas específicos que você mencionou nas interações anteriores, vamos resolvê-los:

  1. Erro 'no rule to make target 'main.c', needed by 'main.o'':

    Parece que houve um problema na criação do arquivo objeto. Certifique-se de que seu makefile esteja corretamente formatado, e que o nome do arquivo seja "main.c". O trecho de código que soluciona isso é:

    main.o: main.c
        $(CC) -c -o main.o main.c $(CFLAGS)
    
  2. Erro 'missing separator':

    Este erro ocorre quando o makefile não reconhece a formatação correta. Certifique-se de que as linhas no seu makefile estão indentadas com tabs, não espaços. Aqui está um exemplo correto:

    CC=gcc
    CFLAGS=-I/usr/include/curl
    LDFLAGS=-lcurl
    
    program: main.o
        $(CC) -o program main.o $(LDFLAGS)
    
    main.o: main.c
        $(CC) -c -o main.o main.c $(CFLAGS)
    
    clean:
        rm -f program main.o
    

https://www.vivaolinux.com.br/artigo/Guia-para-iniciantes-no-Linux -> indicação!

solução!

Você estava coberto de razão: indentei o makefile e foi "correr pro abraço". Uma curiosidade: o que faz este programa porque eu o rodei na VM Ubuntu, instalada conforme o professor, mas não consegui visualizar o efeito, conforme a imagem VM UBUNTU VERSUS WINSCP