仅在 1 个文件 c 中未定义对“函数”的引用,

undefined reference to `function' in only 1 file c,

我有一个名为 main.c

的 c 文件
#include <stdio.h>
extern int main(int argc, char* argv[], char* envp[]);
void start(){
    ...;
    int return_code = main(argc, argv, envp);

    exit(return_code);
}

你可以看到我声明了 main 但是当使用 ld 到 link 它时:

$ (use ld to link, I didn't write it down because it's quite verbose and irrelevant)
ld: bin/test.o: in function `start':
/home/user/Desktop/test/test.c:28: undefined reference to `main'
make: *** [Makefile:49: link] Error 1

所以我该怎么办(抱歉,如果这对你来说是一个简单的问题)

一般来说,召唤ld自己就是贪吃受罚。使用你的 C 编译器来 link 直到证明不是这样。

gcc -o bin/test bin/test.o 将为您 link 一个 C 程序。

您似乎试图通过提供 _start 自己来“修复”它。你不能(在 C 中)。 _start 不是函数。

在 C 中,您必须定义一个将由您的程序自动调用的 main 函数,这是您的代码的基础。

我看到您包含“stdio.h”,这是一个允许访问某些函数的库,例如在我的程序中的函数“printf”。 如果您不需要它,请不要包含它:)

例如,这里是如何使用 main 函数编写您的第一个程序。

#include <stdio.h>

int main(int argc, char *argv[]){
    
    ... // Your code

    printf("Hello world"); // Just print on your terminal this string
    return (0); // 0 is the default return code if there is no errors 
}