仅在 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
}
我有一个名为 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
}