C 创建pthread时,使用另一个源文件中的start_函数

C 创建pthread时,使用另一个源文件中的start_函数,c,pthreads,C,Pthreads,在一个源文件中的main()方法中,我调用了pthread_create(),如下所示: pthread_t pth_chanrecv; pthread_create(&pth_chanrecv, NULL, chanrecv_run, NULL); “chanrecv_run”是我编写的另一个源文件中的函数。 这是功能原型: void *chanrecv_run(void *arg); 函数原型位于一个头文件中,我已将其包含在包含main()方法的源文件中 我用以下语句编译我的程序

在一个源文件中的main()方法中,我调用了pthread_create(),如下所示:

pthread_t pth_chanrecv;
pthread_create(&pth_chanrecv, NULL, chanrecv_run, NULL);
“chanrecv_run”是我编写的另一个源文件中的函数。
这是功能原型:

void *chanrecv_run(void *arg);
函数原型位于一个头文件中,我已将其包含在包含main()方法的源文件中

我用以下语句编译我的程序:

gcc -lpthread -o bin/main2 src/main2.c
chanrecv_run()函数位于名为“chanrecv.c”的文件中,也位于src文件夹中

每次我尝试编译它时,都会出现以下错误:

/tmp/ccHxRSTk.o: In function `main':
main2.c:(.text+0x256): undefined reference to `chanrecv_run'
collect2: ld returned 1 exit status

我不知道出了什么问题。我在网上搜索,试图找到另一个实例,有人试图用pthread_create函数调用另一个文件中的函数,结果完全是空白。这是可能的吗?如果可能,如何实现?

这个问题与pthreads无关。由于您尚未链接包含
chanrecv\u run
函数的第二个.c文件,链接器发出呻吟

你需要:

gcc -lpthread -o bin/main2 src/main2.c src/file_with_chanrecv_run_in.c

您需要将其添加到编译器调用中,以便在编译器启动链接时使其可用:

gcc -Wall -o main2 main2.c chanrecv.c -pthread

我不这么做的最初原因是因为我的全局变量出现了一个错误,但我解决了这个问题,现在一切都正常了。谢谢。我将把这个标记为答案,因为它是第一个(虽然只差14秒)。