Неопределённая ссылка на «main»

Новичок в С

sudo gcc cookie.c

error code

(root@mat-VirtualBox:/home/gather/Desktop/MIX_TTL_AND# gcc cookie.c /usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o: в функции «_start»: (.text+0x24): неопределённая ссылка на «main» collect2: error: ld returned 1 exit status)

void Get_cookie(char *ck, char *message) 
{    
    const int COOKIE_SIZE = 102400;
    int i, j, length = 0;
    char temp[] = "Set-Cookie: ";
    char cookie[COOKIE_SIZE];
    char *start = NULL;
    char *msg = NULL;
    char *st = NULL;
    
    msg = strstr(message, temp);                        // find set-cookie in message
    if (msg == NULL)                                    // not found
    {                                   
        strcpy(ck, "null");                             // return null
        return;
    }
    start = (char *) malloc(COOKIE_SIZE*sizeof(char));
    strcpy(start, msg);                                 // copy msg to start
    do 
    {
        st = strstr(start, temp);                       // find set-cookie in start
        if (st == NULL) 
            break;                                      // don't have anymore => break
        st += strlen(temp);                             // move st pointer to content of feild
        i = 0;
        while (st[i] != '\n')                           // find the character endline '\n'
            i++;                                        
        for (j = 0; j < i; j++)                         // copy content to cookie 
        {                       
            cookie[length+j] = st[j];
        }
        cookie[length+i] = ';';                         // add ;
        length += (i + 1);
        start += (strlen(temp) + i + 1);                // move start pointer to next feild
    } while (st != NULL);
    cookie[length] = '\0';
    strcpy(ck, cookie);                                 // return via ck
    printf("Cookie: \n%s\n", cookie); 
}

Ответы (2 шт):

Автор решения: Rikitikitavi

Если вы хотите скомпилировать cookie.c то нужно вызвать gcc так:

gcc -c cookie.c 

и вы получите объектный файл cookie.o. Что бы получить программу нужно что бы у вас была где-то функция main, например в файле main.c. Компилируете ее также:

gcc -c main.c 

Далее собираете прогармму:

gcc -o myapp cookie.o main.o

и через sudo не нужно с компилятором работать.

Вот например: здесь и здесь рассказывают как работает gcc

→ Ссылка
Автор решения: Mikhail

Попробуйте добавить функцию main в проект, как я уже сделал ниже.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string>
void Get_cookie(char* ck, char* message)
{
    const int COOKIE_SIZE = 102400;
    int i, j, length = 0;
    char temp[] = "Set-Cookie: ";
    char cookie[COOKIE_SIZE];
    char* start = NULL;
    char* msg = NULL;
    char* st = NULL;

    msg = strstr(message, temp);                        // find set-cookie in message
    if (msg == NULL)                                    // not found
    {
        strcpy(ck, "null");                             // return null
        return;
    }
    start = (char*)malloc(COOKIE_SIZE * sizeof(char));
    strcpy(start, msg);                                 // copy msg to start
    do
    {
        st = strstr(start, temp);                       // find set-cookie in start
        if (st == NULL)
            break;                                      // don't have anymore => break
        st += strlen(temp);                             // move st pointer to content of feild
        i = 0;
        while (st[i] != '\n')                           // find the character endline '\n'
            i++;
        for (j = 0; j < i; j++)                         // copy content to cookie 
        {
            cookie[length + j] = st[j];
        }
        cookie[length + i] = ';';                         // add ;
        length += (i + 1);
        start += (strlen(temp) + i + 1);                // move start pointer to next feild
    } while (st != NULL);
    cookie[length] = '\0';
    strcpy(ck, cookie);                                 // return via ck
    printf("Cookie: \n%s\n", cookie);
}

int main() {
    char ck[10];
    char message[10];
    strcpy(ck, "ty");
    strcpy(message, "hellow");
    Get_cookie(ck, message);
    return 0;
}
→ Ссылка