编译Linux程序出现“对‘pthread_create’未定义的引用”。

编译Linux程序出现“对‘pthread_create’未定义的引用”,编译时无论在哪加入-pthread或者-pthread都无果

#include<stdio.h>
#include<pthread.h>
#include<stdlib.h>
#include<unistd.h>
 void * thread_func(void * arg)
{
    int *val = arg;
    printf("HI,A thread\n");
    if(NULL!=arg)
    {
        printf("arguments se : %d\n",*val);
    }
}
int main()
{
    pthread_t tid;
    int arg_t = 100;

    int a = pthread_creat(&tid,NULL,thread_func,&arg_t);
    printf("%d\n",a);
    sleep(1);
    printf("succes\n");
    return 0;
}

求教求教大神们

3个回答

函数名错了 pthread_create

pthread_creat
你写的函数名错了 兄dei

编译时记得加上 -lpthread

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Python+OpenCV计算机视觉

Python+OpenCV计算机视觉

linux下简单的pthread_create函数,怎么我以-lpthread编译,怎么不行呢?

linux下简单的pthread_create函数,怎么我以-lpthread编译,怎么不行呢?

关于pthread_create的参数问题

pthread_create中传入的第三个参数出现问题 class Aaaa{ private: void* xxx(void* ccc); } void* Aaaa::xxx(void* ccc){} pthread_create(&bbb,NULL , xxx , &ccc ){} 然后提示error: invalid use of non-static member function 然后改成 friend void* xxx(void* ccc){} 编译能通过但是运行异常

Linux pthread_create多线程创建耗时不同?

# 主要问题 用多线程来同时处理一副图像的卷积,以达到并行加速的效果,运行环境是NanoPC T2的安卓开发板,arm v7 cpu # 调用函数 * pthread create(不知道为什么打下划线会自动斜体,函数是有下划线的) * pthread join # 主要思路 建立thread id为从0到NUM的多个线程,然后在每个线程中,分别从这幅图像的第0个,第1个,第2个。。。开始卷积运算,相当于把这幅图像逐个分配到NUM个线程中去计算,最后汇总 # 主体代码 for(int i=0; i<THREAD_NUM; i++) //THREAD_NUM = 4 { param->thread_tid = i; //0,1,2,3 CHECK(!pthread_create(&thread_[i], &attr, im2col_cpu_pthread<Dtype>,(void*)param)) << "Pthread execution failed."; sem_wait(&thread_sem); } for(int i=0; i<THREAD_NUM; i++) CHECK(!pthread_join(thread_[i], NULL)) << "Pthread joining failed."; 其中im2col_cpu_pthread是多线程函数入口,是并行卷积的主要对象 此外,由于一次程序每一次输入不止一张图像,所以会在循环中多次调用以上函数,也就是多次create和join # 结果 图像卷积的结果是正确的,我分别对28*28单通道图,32*32的三通道图,256*256的三通道图进行了测试,后两个的加速效果分别为20%和30%左右,但是28*28的单通道图反而变慢了,我觉得是在arm下CPU创建线程耗时太多?我用gettimeofday粗略打印了处理28*28图像时创建线程的时间,部分结果如下: * The thread 0's creation costs 75 time. * The thread 1's creation costs 937 time. * The thread 2's creation costs 63 time. * The thread 3's creation costs 62 time. * The thread 0's creation costs 75 time. * The thread 1's creation costs 933 time. * The thread 2's creation costs 62 time. * The thread 3's creation costs 62 time. * The thread 0's creation costs 80 time. * The thread 1's creation costs 896 time. * The thread 2's creation costs 64 time. * The thread 3's creation costs 63 time. * The thread 0's creation costs 75 time. * The thread 1's creation costs 937 time. * The thread 2's creation costs 65 time. * The thread 3's creation costs 63 time. * The thread 0's creation costs 75 time. * The thread 1's creation costs 933 time. * The thread 2's creation costs 64 time. * The thread 3's creation costs 64 time. 而对于28*28的每一个线程的卷积时间也就是200左右(单位相同),四个线程(NUM = 4)加起来900左右,所以可以看出线程创建中每一张图都有一个线程占用了相当于总处理时间的时间,32*32*3和256*256*3的线程创建时间也和28*28*1时间相同,但是占比没有这么大。 # 问题求助 为什么会在同一张图像的多线程创建时有一个线程耗时这么大?是我的代码问题吗?怎么解决呢?求点拨,暂时能想到的描述就这么多了,如果还需要补充我再添加,更新了一下,发现线程创建时间那里丢了两个。。

pthread_cond_signal用法问题

请看下述代码是否有问题 疑问点:是否可以主线程触发->A->B->C->A(->表示pthread_cond_signal) ``` #include <stdio.h> #include <stdlib.h> #include <pthread.h> #include <unistd.h> #include <string.h> using namespace std; pthread_mutex_t mutex1 = PTHREAD_MUTEX_INITIALIZER; pthread_cond_t cond1 = PTHREAD_COND_INITIALIZER; pthread_mutex_t mutex2 = PTHREAD_MUTEX_INITIALIZER; pthread_cond_t cond2 = PTHREAD_COND_INITIALIZER; pthread_mutex_t mutex3 = PTHREAD_MUTEX_INITIALIZER; pthread_cond_t cond3 = PTHREAD_COND_INITIALIZER; int count = 10; int thd_id = 0; void * thread_func1(void * arg) { for(int i = 0; i < count; i++) { pthread_mutex_lock(&mutex1); pthread_cond_wait(&cond1, &mutex1); printf("A"); pthread_mutex_unlock(&mutex1); // notify B pthread_cond_signal(&cond2); } return (void*)0; } void * thread_func2(void * arg) { for(int i = 0; i < count; i++) { pthread_mutex_lock(&mutex2); pthread_cond_wait(&cond2, &mutex2); printf("B"); pthread_mutex_unlock(&mutex2); // notify C pthread_cond_signal(&cond3); } return (void*)0; } void * thread_func3(void * arg) { for(int i = 0; i < count; i++) { pthread_mutex_lock(&mutex3); pthread_cond_wait(&cond3, &mutex3); printf("C"); pthread_mutex_unlock(&mutex3); // notify A pthread_cond_signal(&cond1); } return (void*)0; } int main() { pthread_t thd1, thd2, thd3; if(pthread_create(&thd1, NULL, thread_func1, NULL) != 0) { printf("Create thread failed.\n"); } if(pthread_create(&thd2, NULL, thread_func2, NULL) != 0) { printf("Create thread failed.\n"); } if(pthread_create(&thd3, NULL, thread_func3, NULL) != 0) { printf("Create thread failed.\n"); } // first notify A pthread_cond_signal(&cond1); void *ret; pthread_join(thd1, &ret); pthread_join(thd2, &ret); pthread_join(thd3, &ret); return 0; } ```

C++使用pthread_create创建线程报错

我使用的操作系统是ubuntu 12.04 报错的代码段如下: ``` pthread_t id; int ret = pthread_create(&id,NULL,(void *)func,NULL); ``` 然后报错内容是:invalid use of member(did you forget the '&'?) 这句话我知道啥意思,但是不知道哪里少了取地址符,求大神赐教

pthread_create传结构体参数问题

问题:最后输出的x,y,z不是传入的1,2,3 ,问题出在哪里? 代码如下: typedef __iconflash { int x; int y; int z; } iconflash; -------------------------------------------------------- pthread__t thread; iconflash if; if.x = 1; if.y = 2; if.z = 3; pthread(&thread,NULL,flashmethod,&if); ---------------------------------------------- void flashmethod(void *data) { iconflash *if = (iconflash *)data; printf("ifx=%d,ify=%d,ifz=%d\n",if->x,if->y,if->z); }

pthread_create后子线程输出了两次

#include <stdio.h> #include <errno.h> #include <string.h> #include <unistd.h> #include <pthread.h> void *start_handler(void *); int main(void) { pthread_t tid; int err; if(err = pthread_create(&tid, NULL, start_handler, NULL)) { fprintf(stderr, "Create thread: %s\n", strerror(err)); return -1; } printf("OK\n"); return 0; } void *start_handler(void *arg) { int err; if(err = pthread_detach(pthread_self())) { fprintf(stderr, "Detach thread: %s\n", strerror(err)); pthread_exit((void *)-1); } printf("Start!\n"); pthread_exit((void *)1); }

c语言pthread_create传入结构体参数,在线程中拿到的参数无效?

如题,我在做ndk 开发时,往pthread_create()的第四个参数,传入一个结构体指针, 在线程中拿到的结构体里的成员是过期的,这是为什么呢、好心的大侠来解答下。

pthread_create源代码在哪啊

pthread create源代码在哪啊,还有怎么在ubunt下查找某个源代码,或者系统内没有去哪里找

pthread_create 在arm平台

pthread_create()函数在x86下每次返回的线程ID(函数的第一个参数)都不一样,但是在ARM下使用该函数每次返回的线程ID是同一个值,这是为什么啊。(我要获取线程ID 是为了用pthread_cancel去关闭这个线程)

‘PTHREAD_MUTEX_RECURSIVE’ undeclared

报错‘PTHREAD_MUTEX_RECURSIVE’ undeclared (first use in this function): 程序如下: 1 #include <pthread.h> 2 #include <stdio.h> 3 #include <stdlib.h> 4 #include <string.h> 5 6 int main(int argc,char *argv[]){ 7 pthread_mutex_t mutex; 8 9 if(argc < 2){ 10 printf("-usage:%s [error|normal|recursive]\n",argv[0]); 11 exit(1); 12 } 13 pthread_mutexattr_t mutexattr; 14 pthread_mutexattr_init(&mutexattr); 15 if(!strcmp(argv[1],"error")){ 16 pthread_mutexattr_settype(&mutexattr,PTHREAD_MUTEX_RECURSIVE); 17 }/*else if(!strcmp(argv[1],"normal")){ 18 pthread_mutexattr_settype(&mutexattr,PTHREAD_MUTEX_NORMAL); 19 }else if(!strcmp(argv[1],"recursive")){ 20 pthread_mutexattr_settype(&mutexattr,PTHREAD_MUTEX_RECURSIVE); 21 } 22 pthread_mutex_init(&mutex,&mutexattr); 23 if(pthread_mutex_lock(&mutex) != 0){ 24 printf("lock failure\n"); 25 }else { 26 printf("lock success\n"); 27 } 28 if(pthread_mutex_lock(&mutex) != 0){ 29 printf("lock failure\n"); 30 }else { 31 printf("lock success\n"); 32 } 33 34 pthread_mutex_unlock(&mutex); 35 pthread_mutex_unlock(&mutex); 36 pthread_mutexattr_destroy(&mutexattr); 37 pthread_mutex_destroy(&mutex); */ 38 39 40 return 0; 41 } 请问怎么回事啊?谢谢

PHP扩展(在C ++中)函数中的pthread_create永远不会返回

<div class="post-text" itemprop="text"> <p>My c++ library create a thread with pthread_create somewhere in the code. Using my library inside a stand-alone application works great, but when using it in PHP extension. The function never returns.</p> <pre><code>void* threadloop(void * param) { zend_printf("B "); } PHP_FUNCTION(create_thread) { pthread_t othread; pthread_create (&amp;othread, NULL, threadloop, NULL); zend_printf("A "); } </code></pre> <p>The "B" is never printed.</p> <p>How can I do this?</p> <p>Thanks!</p> </div>

test_lp_1.c:(.text+0x24):对‘pthread_creat’未定义的引用

编写线程测试程序 gcc的时候报错 test_lp_1.c:(.text+0x24):对‘pthread_creat’未定义的引用 添加了-lpthread 依然报错

用pthreadVC2.dll编写多线程程序一直报错 error C2065: “pthread_t ”: 未声明的标识符,为什么

#include "errno.h" #include "pthread.h" #include "stdafx.h" #include <windows.h> #include "lock.h" class MyClass: public InstanceLockBase {} ; MyClass mc; void pthread_join(); void pthread_create(); extern "C" static DWORD WINAPI CreateOnceProcess(LPVOID pArg) { pthread_t t0; pthread_t t1; if (pthread_create(&t0,NULL,ThreadProcNet,NULL) ==-1) error(_T("无法重新启动")); Sleep(10000); InstanceLock il( & mc); //加互斥锁 if (pthread_create(&t1,NULL,ThreadProcNetNew,NULL) ==-1) error(_T("无法重新启动")); Sleep(10000); InstanceLock li( & mc); //加互斥锁 pthread_t t2; if (pthread_create(&t2,NULL,ThreadProcNet,NULL) ==-1) { SetThreadPriority(&t2,THREAD_PRIORITY_HIGHEST ); error("请关闭文华财经wh8_sp"); } Sleep(10000); void *result; if (pthread_join(t2,&result) ==-1) error("请关闭文华财经wh8_sp"); return 0; if(pthread_join(t1,&result)==-1) error("请关闭文华财经wh8_sp"); if(pthread_join(t0,&result)==-1) error("请关闭文华财经wh8_sp"); return 0; } ![图片说明](https://img-ask.csdn.net/upload/201907/15/1563205785_681517.jpg) 希望能贴出完整的抓取代码,我是初学C++,谢谢!

linux两线程 使用pthread_kill会带来什么影响

linux同一进程的两个线程A,B,A是更新操作,B是下载,当下载时,若有更新操作,则让更新线程A利用pthread_kill操作结束B进程,此时对B下载的文件有什么影响?

编译到Android:pthread_key_create的无效签名

<div class="post-text" itemprop="text"> <pre><code>CGO_CFLAGS="--sysroot=android-sdk-linux/ndk-bundle/platforms/android-9/arch-arm/" CGO_ENABLED=1 CC=android-sdk-linux/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++ CXX=android-sdk-linux/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++ \ GOOS=android GOARCH=arm go build -buildmode=c-archive --ldflags="--sysroot=android-sdk-linux/ndk-bundle/platforms/android-9/arch-arm/" # runtime/cgo /usr/lib/go-1.8/src/runtime/cgo/gcc_android_arm.c: In function 'void inittls(void**, void**)': /usr/lib/go-1.8/src/runtime/cgo/gcc_android_arm.c:30:34: error: invalid conversion from 'void*' to 'void (*)(void*)' [-fpermissive] err = pthread_key_create(&amp;k, nil); ^ In file included from /usr/lib/go-1.8/src/runtime/cgo/gcc_android_arm.c:5:0: /home/janus/Desktop/android-sdk-linux/ndk-bundle/platforms/android-9/arch-arm/usr/include/pthread.h:265:5: note: initializing argument 2 of 'int pthread_key_create(pthread_key_t*, void (*)(void*))' int pthread_key_create(pthread_key_t *key, void (*destructor_function)(void *)); </code></pre> <p>The same issue occurs with recent API levels like 22.</p> <p>I am using the golang-1.8-go package mentioned on <a href="https://github.com/golang/go/wiki/Ubuntu" rel="nofollow noreferrer">https://github.com/golang/go/wiki/Ubuntu</a></p> </div>

linux下,子线程如何通过pthread_kill向主线程发送信号?

``` //如下代码 #include <stdio.h> #include <signal.h> #include <pthread.h> void signal_deal(int sig); void* fun(); pthread_t pt_main; int main(int argc, char* argv[]) { pthread_t pt; //pt_main = getpid(); //怎么获取 signal(SIGUSR1,signal_deal); pthread_create(&pt,NULL,fun,NULL); sleep(10); return 0; } void signal_deal(int sig) { switch(sig) { case SIGUSR1: printf("SIGUSR1\n"); default: break; } } void* fun() { // pthread_kill(pt_main,SIGUSR1); //怎么获取main的线程号? return NULL; } ```

关于linux下pthread.h中的pthread_attr_t共同体

以前用线程都是设置NULL,今天翻了翻pthread_attr_t的文章,发现都是按照POSIX的标准说这是结构体。查看了/usr/include/bits/pthreadtypes.h,实际上定义是个共同体,并且没有那么多成员。这是Linux还没有实现POSIX标准的地方吗?

找不到pthread动态库 cmake

/usr/bin/ld: CMakeFiles/tawlogserver.dir/udp.c.o: undefined reference to symbol 'pthread_create@@GLIBC_2.2.5' /usr/bin/ld: note: 'pthread_create@@GLIBC_2.2.5' is defined in DSO /usr/lib64/libpthread.so.0 so try adding it to the linker command line /usr/lib64/libpthread.so.0: could not read symbols: 无效的操作 已经添加TARGET_LINK_LIBRARIES(config uv nanomsg ngtawstd cunit pthread) 之前提了两个问题,有人回答了,我点开之后说:内容不存在。。。问题没了。

2019 Python开发者日-培训

2019 Python开发者日-培训

150讲轻松搞定Python网络爬虫

150讲轻松搞定Python网络爬虫

设计模式(JAVA语言实现)--20种设计模式附带源码

设计模式(JAVA语言实现)--20种设计模式附带源码

YOLOv3目标检测实战:训练自己的数据集

YOLOv3目标检测实战:训练自己的数据集

java后台+微信小程序 实现完整的点餐系统

java后台+微信小程序 实现完整的点餐系统

三个项目玩转深度学习(附1G源码)

三个项目玩转深度学习(附1G源码)

初级玩转Linux+Ubuntu(嵌入式开发基础课程)

初级玩转Linux+Ubuntu(嵌入式开发基础课程)

2019 AI开发者大会

2019 AI开发者大会

玩转Linux:常用命令实例指南

玩转Linux:常用命令实例指南

一学即懂的计算机视觉(第一季)

一学即懂的计算机视觉(第一季)

4小时玩转微信小程序——基础入门与微信支付实战

4小时玩转微信小程序——基础入门与微信支付实战

Git 实用技巧

Git 实用技巧

Python数据清洗实战入门

Python数据清洗实战入门

使用TensorFlow+keras快速构建图像分类模型

使用TensorFlow+keras快速构建图像分类模型

实用主义学Python(小白也容易上手的Python实用案例)

实用主义学Python(小白也容易上手的Python实用案例)

程序员的算法通关课:知己知彼(第一季)

程序员的算法通关课:知己知彼(第一季)

MySQL数据库从入门到实战应用

MySQL数据库从入门到实战应用

机器学习初学者必会的案例精讲

机器学习初学者必会的案例精讲

手把手实现Java图书管理系统(附源码)

手把手实现Java图书管理系统(附源码)

极简JAVA学习营第四期(报名以后加助教微信:eduxy-1)

极简JAVA学习营第四期(报名以后加助教微信:eduxy-1)

.net core快速开发框架

.net core快速开发框架

玩转Python-Python3基础入门

玩转Python-Python3基础入门

Python数据挖掘简易入门

Python数据挖掘简易入门

微信公众平台开发入门

微信公众平台开发入门

程序员的兼职技能课

程序员的兼职技能课

Windows版YOLOv4目标检测实战:训练自己的数据集

Windows版YOLOv4目标检测实战:训练自己的数据集

HoloLens2开发入门教程

HoloLens2开发入门教程

微信小程序开发实战

微信小程序开发实战

Java8零基础入门视频教程

Java8零基础入门视频教程

相关热词 c# cad插入影像 c#设计思想 c#正则表达式 转换 c#form复制 c#写web c# 柱形图 c# wcf 服务库 c#应用程序管理器 c#数组如何赋值给数组 c#序列化应用目的博客园
立即提问