链接器命令失败,退出代码为 1,带有 C 语言的线程

linker command failed with exit code 1 with threads in c language

提问人:Dawid Janas 提问时间:7/31/2022 更新时间:7/31/2022 访问量:139

问:

在我的应用程序中,我收到此错误:

clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)

以下是我的代码:

#include <pthread.h>
#include <stdio.h>

#include <stdlib.h>

int sum;
void *runner(void *param);

int main(int argc, char *argv[]) {
    pthread_t idw;  
    pthread_attr_t atrb; 

    pthread_attr_init(&atrb);
    
    pthread_create(&idw, &atrb,runner,argv[1]);
    
    pthread_join(idw,NULL);

    printf("sum = %d\n", sum);
}
void *runner(void *param){
    int i;
    int up = atoi(param);
    sum=0;

    for (i = 1; i <= up; i++)
        sum+=i;

    pthread_exit(0);
}

我得到了

未定义的架构符号 x86_64: “_runner”,引用自: main-ac5a24.o 中的_main ld:找不到用于体系结构x86_64的符号

我使用的是 macOS,C 版本语言是 C23。

C 多线程 macOS 链接器错误

评论

1赞 Some programmer dude 7/31/2022
您确定您的错误消息吗?它是从所示程序中实际完整复制粘贴的吗?我真诚地怀疑这一点。也许您可以收到类似的消息 和 如果需要该标志,但不是关于 .无论如何,我无法复制错误pthread_createpthread_join-pthreadrunner
1赞 Jérôme Richard 7/31/2022
我无法使用 Clang 14 重现此内容。我猜您在缺少的地方构建了错误的文件(不是最新的)。顺便说一句,Clang尚未完全支持C23,甚至尚未得到认可(见此处),但这肯定与您的问题无关。void *runner(void *param);
0赞 Bill Morgan 7/31/2022
你用什么命令来编译和链接你的代码?
0赞 Dawid Janas 7/31/2022
我使用以下命令gcc main.c编译
0赞 Some programmer dude 8/1/2022
这个问题中显示的确切代码吗?main.c

答: 暂无答案