QT多线程中undefined reference to 'pthread_create'错误的解决

本文详细介绍了如何通过修改Qtopia项目的qmake配置文件,自动在生成的Makefile中添加所需的链接库参数,以简化链接过程,并避免重复手动操作。

build文件内容

#!/bin/bash

source /home/qtopia/arm-qtopia/qtopia-2.2.0-FriendlyARM/setQpeEnv
qmake -spec /home/qtopia/arm-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/mkspecs/qws/linux-arm-g++ -o  Makefile *.pro

make clean
make

 

在执行./build后生成的makefile中找到

LINK     = arm-linux-g++ 在这一行后面加上 -lpthread

然后执行make

 

每次都要这么改很麻烦

于是在生成的makefile里找到了这么一句。

Makefile: hello.pro  /home/qtopia/arm-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/mkspecs/qws/linux-arm-g++/qmake.conf ../qtopia-2.2.0-FriendlyARM/qtopia/src/projects.pri \

OK,在/home/qtopia/arm-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/mkspecs/qws/linux-arm-g++/qmake.conf

里找到这句

QMAKE_LINK  = arm-linux-g++

在该行后面加上-pthread即可。

====================[ 构建 | C++OpenCV_rendering-to-QML | Debug ]================= "D:\CLion 2025.1.3\bin\cmake\win\x64\bin\cmake.exe" --build "E:\CLionc++lianxi\C++OpenCV_rendering to QML\cmake-build-debug" --target C++OpenCV_rendering-to-QML -j 4 [1/4] Automatic MOC for target C++OpenCV_rendering-to-QML [2/3] Building CXX object CMakeFiles/C++OpenCV_rendering-to-QML.dir/main.cpp.obj [3/3] Linking CXX executable C++OpenCV_rendering-to-QML.exe FAILED: C++OpenCV_rendering-to-QML.exe C:\Windows\system32\cmd.exe /C "cd . && "D:\CLion 2025.1.3\bin\mingw\bin\g++.exe" -g -mwindows CMakeFiles/C++OpenCV_rendering-to-QML.dir/C++OpenCV_rendering-to-QML_autogen/mocs_compilation.cpp.obj CMakeFiles/C++OpenCV_rendering-to-QML.dir/main.cpp.obj CMakeFiles/C++OpenCV_rendering-to-QML.dir/C++OpenCV_rendering-to-QML_autogen/DHU3A7JD2B/qrc_source.cpp.obj -o C++OpenCV_rendering-to-QML.exe -Wl,--out-implib,libC++OpenCV_rendering-to-QML.dll.a -Wl,--major-image-version,0,--minor-image-version,0 D:/Qt/6.8.3/msvc2022_64/lib/Qt6QuickControls2d.lib "E:/CLionc++lianxi/C++OpenCV_rendering to QML/src/qml_opencv/lib/opencv/msvc/lib/opencv_world480d.lib" "E:/CLionc++lianxi/C++OpenCV_rendering to QML/src/qml_opencv/lib/opencv/msvc/lib/opencv_world480d.lib" "E:/CLionc++lianxi/C++OpenCV_rendering to QML/src/qml_opencv/lib/opencv/msvc/lib/opencv_world480d.lib" "E:/CLionc++lianxi/C++OpenCV_rendering to QML/src/qml_opencv/lib/opencv/msvc/lib/opencv_world480d.lib" "E:/CLionc++lianxi/C++OpenCV_rendering to QML/src/qml_opencv/lib/opencv/msvc/lib/opencv_world480d.lib" "E:/CLionc++lianxi/C++OpenCV_rendering to QML/src/qml_opencv/lib/opencv/msvc/lib/opencv_world480d.lib" "E:/CLionc++lianxi/C++OpenCV_rendering to QML/src/qml_opencv/lib/opencv/msvc/lib/opencv_world480d.lib" "E:/CLionc++lianxi/C++OpenCV_rendering to QML/src/qml_opencv/lib/opencv/msvc/lib/opencv_world480d.lib" "E:/CLionc++lianxi/C++OpenCV_rendering to QML/src/qml_opencv/lib/opencv/msvc/lib/opencv_world480d.lib" "E:/CLionc++lianxi/C++OpenCV_rendering to QML/src/qml_opencv/lib/opencv/msvc/lib/opencv_world480d.lib" "E:/CLionc++lianxi/C++OpenCV_rendering to QML/src/qml_opencv/lib/opencv/msvc/lib/opencv_world480d.lib" "E:/CLionc++lianxi/C++OpenCV_rendering to QML/src/qml_opencv/lib/opencv/msvc/lib/opencv_world480d.lib" "E:/CLionc++lianxi/C++OpenCV_rendering to QML/src/qml_opencv/lib/opencv/msvc/lib/opencv_world480d.lib" "E:/CLionc++lianxi/C++OpenCV_rendering to QML/src/qml_opencv/lib/opencv/msvc/lib/opencv_world480d.lib" "E:/CLionc++lianxi/C++OpenCV_rendering to QML/src/qml_opencv/lib/opencv/msvc/lib/opencv_world480d.lib" "E:/CLionc++lianxi/C++OpenCV_rendering to QML/src/qml_opencv/lib/opencv/msvc/lib/opencv_world480d.lib" D:/Qt/6.8.3/msvc2022_64/lib/Qt6Quickd.lib D:/Qt/6.8.3/msvc2022_64/lib/Qt6QmlMetad.lib D:/Qt/6.8.3/msvc2022_64/lib/Qt6QmlWorkerScriptd.lib D:/Qt/6.8.3/msvc2022_64/lib/Qt6OpenGLd.lib -luser32 D:/Qt/6.8.3/msvc2022_64/lib/Qt6Guid.lib -ld3d11 -ldxgi -ldxguid -ld3d12 D:/Qt/6.8.3/msvc2022_64/lib/Qt6QmlModelsd.lib D:/Qt/6.8.3/msvc2022_64/lib/Qt6Qmld.lib D:/Qt/6.8.3/msvc2022_64/lib/Qt6Networkd.lib D:/Qt/6.8.3/msvc2022_64/lib/Qt6Cored.lib -lmpr -luserenv D:/Qt/6.8.3/msvc2022_64/lib/Qt6EntryPointd.lib -lws2_32 -lshell32 -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 && C:\Windows\system32\cmd.exe /C "cd /D "E:\CLionc++lianxi\C++OpenCV_rendering to QML\cmake-build-debug" && D:\Qt\6.8.3\msvc2022_64\bin\windeployqt.exe "E:/CLionc++lianxi/C++OpenCV_rendering to QML/cmake-build-debug/C++OpenCV_rendering-to-QML.exe" --qmldir "E:/CLionc++lianxi/C++OpenCV_rendering to QML/UI_resource/qml""" D:\CLion 2025.1.3\bin\mingw\bin/ld.exe: CMakeFiles/C++OpenCV_rendering-to-QML.dir/main.cpp.obj: in function `indexOfOwnClassInfo': D:/Qt/6.8.3/msvc2022_64/include/QtQml/qqmlprivate.h:809: undefined reference to `__imp__ZNK11QMetaObject15classInfoOffsetEv' D:\CLion 2025.1.3\bin\mingw\bin/ld.exe: D:/Qt/6.8.3/msvc2022_64/include/QtQml/qqmlprivate.h:811: undefined reference to `__imp__ZNK11QMetaObject14classInfoCountEv' D:\CLion 2025.1.3\bin\mingw\bin/ld.exe: D:/Qt/6.8.3/msvc2022_64/include/QtQml/qqmlprivate.h:814: undefined reference to `__imp__ZNK11QMetaObject9classInfoEi' D:\CLion 2025.1.3\bin\mingw\bin/ld.exe: D:/Qt/6.8.3/msvc2022_64/include/QtQml/qqmlprivate.h:814: undefined reference to `__imp__ZNK14QMetaClassInfo4nameEv' D:\CLion 2025.1.3\bin\mingw\bin/ld.exe: D:/Qt/6.8.3/msvc2022_64/include/QtQml/qqmlprivate.h:814: undefined reference to `__imp__Z7qstrcmpPKcS0_' D:\CLion 2025.1.3\bin\mingw\bin/ld.exe: CMakeFiles/C++OpenCV_rendering-to-QML.dir/main.cpp.obj: in function `main': E:/CLionc++lianxi/C++OpenCV_rendering to QML/main.cpp:12: undefined reference to `__imp__ZN12QQuickWindow14setGraphicsApiEN20QSGRendererInterface11GraphicsApiE' D:\CLion 2025.1.3\bin\mingw\bin/ld.exe: E:/CLionc++lianxi/C++OpenCV_rendering to QML/main.cpp:19: undefined reference to `cv::VideoCapture::VideoCapture()' D:\CLion 2025.1.3\bin\mingw\bin/ld.exe: E:/CLionc++lianxi/C++OpenCV_rendering to QML/main.cpp:24: undefined reference to `__imp__ZN15QGuiApplicationC1ERiPPci' D:\CLion 2025.1.3\bin\mingw\bin/ld.exe: E:/CLionc++lianxi/C++OpenCV_rendering to QML/main.cpp:37: undefined reference to `__imp__ZN10QQmlEngineC1EP7QObject' D:\CLion 2025.1.3\bin\mingw\bin/ld.exe: E:/CLionc++lianxi/C++OpenCV_rendering to QML/main.cpp:41: undefined reference to `__imp__ZN13QQmlComponentC1EP10QQmlEngineP7QObject' D:\CLion 2025.1.3\bin\mingw\bin/ld.exe: E:/CLionc++lianxi/C++OpenCV_rendering to QML/main.cpp:55: undefined reference to `__imp__ZN4QUrlC1ERK7QStringNS_11ParsingModeE' D:\CLion 2025.1.3\bin\mingw\bin/ld.exe: E:/CLionc++lianxi/C++OpenCV_rendering to QML/main.cpp:55: undefined reference to `__imp__ZN13QQmlComponent7loadUrlERK4QUrl' D:\CLion 2025.1.3\bin\mingw\bin/ld.exe: E:/CLionc++lianxi/C++OpenCV_rendering to QML/main.cpp:55: undefined reference to `__imp__ZN4QUrlD1Ev' D:\CLion 2025.1.3\bin\mingw\bin/ld.exe: E:/CLionc++lianxi/C++OpenCV_rendering to QML/main.cpp:58: undefined reference to `__imp__ZNK13QQmlComponent7isErrorEv' D:\CLion 2025.1.3\bin\mingw\bin/ld.exe: E:/CLionc++lianxi/C++OpenCV_rendering to QML/main.cpp:60: undefined reference to `__imp__ZNK14QMessageLogger5debugEv' D:\CLion 2025.1.3\bin\mingw\bin/ld.exe: E:/CLionc++lianxi/C++OpenCV_rendering to QML/main.cpp:60: undefined reference to `__imp__ZNK13QQmlComponent11errorStringEv' D:\CLion 2025.1.3\bin\mingw\bin/ld.exe: E:/CLionc++lianxi/C++OpenCV_rendering to QML/main.cpp:60: undefined reference to `__imp__ZN6QDebugD1Ev' D:\CLion 2025.1.3\bin\mingw\bin/ld.exe: E:/CLionc++lianxi/C++OpenCV_rendering to QML/main.cpp:64: undefined reference to `__imp__ZN13QQmlComponent6createEP11QQmlContext' D:\CLion 2025.1.3\bin\mingw\bin/ld.exe: E:/CLionc++lianxi/C++OpenCV_rendering to QML/main.cpp:67: undefined reference to `__imp__ZNK13QQmlComponent7isErrorEv' D:\CLion 2025.1.3\bin\mingw\bin/ld.exe: E:/CLionc++lianxi/C++OpenCV_rendering to QML/main.cpp:69: undefined reference to `__imp__ZNK14QMessageLogger5debugEv' D:\CLion 2025.1.3\bin\mingw\bin/ld.exe: E:/CLionc++lianxi/C++OpenCV_rendering to QML/main.cpp:69: undefined reference to `__imp__ZNK13QQmlComponent11errorStringEv' D:\CLion 2025.1.3\bin\mingw\bin/ld.exe: E:/CLionc++lianxi/C++OpenCV_rendering to QML/main.cpp:69: undefined reference to `__imp__ZN6QDebugD1Ev' D:\CLion 2025.1.3\bin\mingw\bin/ld.exe: E:/CLionc++lianxi/C++OpenCV_rendering to QML/main.cpp:71: undefined reference to `__imp__ZN15QGuiApplication4execEv' D:\CLion 2025.1.3\bin\mingw\bin/ld.exe: E:/CLionc++lianxi/C++OpenCV_rendering to QML/main.cpp:72: undefined reference to `__imp__ZN13QQmlComponentD1Ev' D:\CLion 2025.1.3\bin\mingw\bin/ld.exe: E:/CLionc++lianxi/C++OpenCV_rendering to QML/main.cpp:72: undefined reference to `__imp__ZN10QQmlEngineD1Ev' D:\CLion 2025.1.3\bin\mingw\bin/ld.exe: E:/CLionc++lianxi/C++OpenCV_rendering to QML/main.cpp:72: undefined reference to `__imp__ZN15QGuiApplicationD1Ev' D:\CLion 2025.1.3\bin\mingw\bin/ld.exe: E:/CLionc++lianxi/C++OpenCV_rendering to QML/main.cpp:72: undefined reference to `cv::VideoCapture::~VideoCapture()' D:\CLion 2025.1.3\bin\mingw\bin/ld.exe: E:/CLionc++lianxi/C++OpenCV_rendering to QML/main.cpp:55: undefined reference to `__imp__ZN4QUrlD1Ev' D:\CLion 2025.1.3\bin\mingw\bin/ld.exe: E:/CLionc++lianxi/C++OpenCV_rendering to QML/main.cpp:60: undefined reference to `__imp__ZN6QDebugD1Ev' D:\CLion 2025.1.3\bin\mingw\bin/ld.exe: E:/CLionc++lianxi/C++OpenCV_rendering to QML/main.cpp:69: undefined reference to `__imp__ZN6QDebugD1Ev' D:\CLion 2025.1.3\bin\mingw\bin/ld.exe: E:/CLionc++lianxi/C++OpenCV_rendering to QML/main.cpp:72: undefined reference to `__imp__ZN13QQmlComponentD1Ev' D:\CLion 2025.1.3\bin\mingw\bin/ld.exe: E:/CLionc++lianxi/C++OpenCV_rendering to QML/main.cpp:72: undefined reference to `__imp__ZN10QQmlEngineD1Ev' D:\CLion 2025.1.3\bin\mingw\bin/ld.exe: E:/CLionc++lianxi/C++OpenCV_rendering to QML/main.cpp:72: undefined reference to `__imp__ZN15QGuiApplicationD1Ev' D:\CLion 2025.1.3\bin\mingw\bin/ld.exe: E:/CLionc++lianxi/C++OpenCV_rendering to QML/main.cpp:72: undefined reference to `cv::VideoCapture::~VideoCapture()' D:\CLion 2025.1.3\bin\mingw\bin/ld.exe: CMakeFiles/C++OpenCV_rendering-to-QML.dir/main.cpp.obj: in function `QString::QString(char const*)': D:/Qt/6.8.3/msvc2022_64/include/QtCore/qstring.h:847: undefined reference to `__imp__ZN7QString8fromUtf8E14QByteArrayView' D:\CLion 2025.1.3\bin\mingw\bin/ld.exe: CMakeFiles/C++OpenCV_rendering-to-QML.dir/main.cpp.obj: in function `QString::data() const': D:/Qt/6.8.3/msvc2022_64/include/QtCore/qstring.h:1242: undefined reference to `__imp__ZN7QString6_emptyE' D:\CLion 2025.1.3\bin\mingw\bin/ld.exe: CMakeFiles/C++OpenCV_rendering-to-QML.dir/main.cpp.obj: in function `QDebug::maybeSpace()': D:/Qt/6.8.3/msvc2022_64/include/QtCore/qdebug.h:93: undefined reference to `__imp__ZN11QTextStreamlsEc' D:\CLion 2025.1.3\bin\mingw\bin/ld.exe: CMakeFiles/C++OpenCV_rendering-to-QML.dir/main.cpp.obj: in function `QDebug::operator<<(QString const&)': D:/Qt/6.8.3/msvc2022_64/include/QtCore/qdebug.h:127: undefined reference to `__imp__ZN6QDebug9putStringEPK5QChary' D:\CLion 2025.1.3\bin\mingw\bin/ld.exe: CMakeFiles/C++OpenCV_rendering-to-QML.dir/main.cpp.obj: in function `QByteArrayView::QByteArrayView<char, true>(char const*, long long)': D:/Qt/6.8.3/msvc2022_64/include/QtCore/qbytearrayview.h:147: undefined reference to `__imp__Z9qt_assertPKcS0_i' D:\CLion 2025.1.3\bin\mingw\bin/ld.exe: D:/Qt/6.8.3/msvc2022_64/include/QtCore/qbytearrayview.h:147: undefined reference to `__imp__Z9qt_assertPKcS0_i' D:\CLion 2025.1.3\bin\mingw\bin/ld.exe: CMakeFiles/C++OpenCV_rendering-to-QML.dir/main.cpp.obj: in function `QtPrivate::QPodArrayOps<char16_t>::destroyAll()': D:/Qt/6.8.3/msvc2022_64/include/QtCore/qarraydataops.h:98: undefined reference to `__imp__Z9qt_assertPKcS0_i' D:\CLion 2025.1.3\bin\mingw\bin/ld.exe: D:/Qt/6.8.3/msvc2022_64/include/QtCore/qarraydataops.h:99: undefined reference to `__imp__Z9qt_assertPKcS0_i' D:\CLion 2025.1.3\bin\mingw\bin/ld.exe: CMakeFiles/C++OpenCV_rendering-to-QML.dir/C++OpenCV_rendering-to-QML_autogen/DHU3A7JD2B/qrc_source.cpp.obj: in function `qInitResources_source()': E:/CLionc++lianxi/C++OpenCV_rendering to QML/cmake-build-debug/C++OpenCV_rendering-to-QML_autogen/DHU3A7JD2B/qrc_source.cpp:88: undefined reference to `qRegisterResourceData(int, unsigned char const*, unsigned char const*, unsigned char const*)' D:\CLion 2025.1.3\bin\mingw\bin/ld.exe: CMakeFiles/C++OpenCV_rendering-to-QML.dir/C++OpenCV_rendering-to-QML_autogen/DHU3A7JD2B/qrc_source.cpp.obj: in function `qCleanupResources_source()': E:/CLionc++lianxi/C++OpenCV_rendering to QML/cmake-build-debug/C++OpenCV_rendering-to-QML_autogen/DHU3A7JD2B/qrc_source.cpp:97: undefined reference to `qUnregisterResourceData(int, unsigned char const*, unsigned char const*, unsigned char const*)' collect2.exe: error: ld returned 1 exit status ninja: build stopped: subcommand failed.
07-26
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值