【问题标题】:Getting error "In function '_start': (.text+0x20): undefined reference to `main'" have not been able to use answers from similar questions to solve出现错误“在函数'_start'中:(.text+0x20): undefined reference to 'main'”无法使用类似问题的答案来解决
【发布时间】:2018-07-30 09:00:18
【问题描述】:

我是 c 新手,在函数 '_start': (.text+0x20): undefined reference to 'main' 中不断收到此错误。我知道这是一个常见错误,但无法在此处使用其他答案来解决。

我正在尝试编译我的“main.c”和“memcheck.h”

我的 main.c:

#include <stdio.h>
#include <stdlib.h>
#include "memcheck.h"


int main () {
  int *ptr;

    ptr = malloc(sizeof(*ptr));
    free(NULL);
return 0;
}

void *memcheck_malloc (size_t size, char *file, int line){
return NULL;
}
void memcheck_free (void *ptr, char *file, int line){
}

我的 memcheck.h:

#include <stdlib.h>

#ifndef MEMCHECK_H
#define MEMCHECK_H

#define main memcheck_main
#undef malloc
#define malloc(size) memcheck_malloc(size, __FILE__, __LINE__)
#undef free
#define free(ptr) memcheck_free(ptr, __FILE__, __LINE__)


void *memcheck_malloc (size_t size, char *file, int line);
void memcheck_free (void *ptr, char *file, int line);


#endif

这是我收到的错误:

$ gcc -Wall -ansi -pedantic -include memcheck.h main.c -o main
/usr/lib/gcc/x86_64-linux-gnu/6/../../../x86_64-linux-gnu/Scrt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
collect2: error: ld returned 1 exit status

【问题讨论】:

  • 你会遇到这个问题,因为编写与标准库函数同名的宏是一个非常愚蠢的想法。你也不能#undef函数。您也不能用不同函数签名的函数替换它们。适当的方法是编写一个包装函数

标签: c linux main


【解决方案1】:

由于以下原因,您没有 main() 函数:

#define main memcheck_main

不知道你想达到什么目的。

【讨论】:

    【解决方案2】:

    我相信您正在制作内存泄漏调试工具?

    只需删除:

    #undef malloc
    #undef free
    

    不要重新定义你的主要功能......

    #define main memcheck_main
    

    否则,您还可以使用“Valgrind”来测试内存泄漏(等等)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-15
      • 1970-01-01
      • 1970-01-01
      • 2017-11-29
      • 1970-01-01
      • 2020-03-25
      相关资源
      最近更新 更多