linux 线程操作问题undefined reference to 'pthread_create'的解决办法(cmake)

问题原因:

pthread 库不是 Linux 系统默认的库,连接时需要使用静态库 libpthread.a.

所以在使用pthread_create()创建线程时,需要链接该库。

1. 终端:问题解决:
在编译中要加 -pthread参数

 gcc thread.c -o thread -pthread

2. qt的cmake配置: 可以修改CMakeLists.txt:

Here is the right answer:

ADD_EXECUTABLE(your_executable ${source_files})

TARGET_LINK_LIBRARIES( your_executable
pthread
)

equivalent to

-pthread

linux 线程操作问题undefined reference to 'pthread_create'的解决办法(cmake)

时间: 2024-12-23 21:44:51

linux 线程操作问题undefined reference to 'pthread_create'的解决办法(cmake)的相关文章

线程异常:undefined reference to 'pthread_create' 处理

源码: #include <stdio.h> #include <pthread.h> #include <sched.h> void *producter_f (void *arg); void *consumer_f (void *arg); int buffer_has_item=0; pthread_mutex_t mutex; int running =1 ; int main (void) { pthread_t consumer_t; pthread_t

arduino开发过程中编译问题undefined reference to `setup&#39;的解决办法

今天遇到这个问题,搜了很久也没有找到真正的答案. 后来灵光乍现,原来是出现了相同的目标文件,既有maze.h和maze.cpp,又有maze.ino,于是编译连接的时候就会出现ld错误了. 将maze.ino重命名为任意不重复的名字,重新编译,问题解决! yeah! arduino开发过程中编译问题undefined reference to `setup'的解决办法

NDK 提示"undefined reference to xxx“的解决办法

在Android.mk文件的 LOCAL_SRC_FILES后面加入包含该类或函数的文件,用\隔开,\后换行继续添加 例如 LOCAL_SRC_FILES := NDKTest.cpp\bncore.c\bn_error.c\bn_fast_mp_invmod.c\bn_fast_mp_montgomery_reduce.c\bn_fast_s_mp_mul_digs.c\bn_fast_s_mp_mul_high_digs.c\bn_fast_s_mp_sqr.c\bn_mp_2expt.c\

undefined reference to `__gxx_personality_sj0&#39;错误解决办法

在交叉编译一个.cpp库时,出现如下错误: undefined reference to `__gxx_personality_sj0' undefined reference to `operator new[](unsigned int)' 解决办法: 修改库中的Makefile文件,在$(LD)  后面的选项中增加 -lsupc++ undefined reference to `__gxx_personality_sj0'错误解决办法

(笔记)Linux线程编译undefined reference to &#39;pthread_create&#39;

在使用线程时,使用gcc或arm-linux-gcc编译时,会出现错误:undefined reference to 'pthread_create' 主要是以下两种原因: 1.#include <pthread.h>  请确认头文件是否添加 2.-lpthread 编译选项,即在编译时需添加额外的编译选项,如使用arm-linux-gcc编译lc300-led-test.c文件,命令正确应该如下: arm-linux-gcc -o lc300-led-test lc300-led-test.

undefined reference to `pthread_create&#39;问题解决

在编译pthread有关的程序时,出现undefined reference to `pthread_create'这样的错误. 问题原因: pthread 库不是 Linux 系统默认的库,连接时需要使用静态库 libpthread.a,所以在使用pthread_create()创建线程,以及调用 pthread_atfork()函数建立fork处理程序时,需要链接该库. 问题解决: 方法一: 在编译中要加 -lpthread参数gcc thread.c -o thread -lpthread

undefined reference to `pthread_create&#39; collect2: ld returned 1 exit status

Linux下编译多线程程序遇到错误: undefined reference to `pthread_create' collect2: ld returned 1 exit status 原因是系统无法找到pthread_create函数.也就是说编译器在link得时候找不到其中的一个使用库的函数. 解决办法如下: For Linux the correct command is: gcc -pthread xxx.c In general, libraries should follow s

pthread.h 的 undefined reference to `pthread_create&#39;

在编译中要加 -lpthread或-pthread参数(不同版本的gcc可能不一样,man gcc可以查阅对应参数). 例如:在加了头文件#include <pthread.h>之后执行 pthread.c文件,需要使用如下命令: gcc -lpthread -o thread thread.c 或 gcc -pthread -o thread thread.c 这种情况类似于<math.h>的使用,需在编译时加 -m 参数. pthread.h 的 undefined refer

linux 编译错误:undefined reference to `__gxx_personality_v0&#39;

(1)编译 c++ 程序需要添加 -lstdc++ 如: gcc -lstdc++ -o test test.c 否则会报 "undefinedreference to '__gxx_personality_v0' " 错误 (2)用gcc命令编译C程序,用g++命令编译C++程序. g++和gcc本质一样的,本质上还是gcc,我们实验室所有的c++程序都是用gcc编译的,一般的程序用gcc足够了. 对于 C++ 程序,编译的时候用 gcc 或者 g++ 都可以.但是在进行连接的时候最