在OSX 10.9上部署Qt 5.2.1应用程序时出现链接器错误
Linker Errors When Deploying Qt 5.2.1 app on OSX 10.9
我正在尝试在我的特立独行的机器上编译Qt应用程序,但得到下面的编译错误。
我已通过设置 QMake 变量将部署目标设置为 10.9
QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.9
这并没有解决问题。 我怀疑Qt使用错误的OSX框架进行编译:
/applications/Xcode.app/Content/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk
何时应该使用
/applications/Xcode.app/Content/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk
有没有人遇到过这样的问题并找到了解决方案?
编译输出:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -headerpad_max_install_names -Wl,-syslibroot,/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk -mmacosx-version-min=10.9 -o qt-rodbot-ip.app/Contents/MacOS/qt-rodbot-ip main.o mainwindow.o videoviewer.o MatToQImage.o ipunitcontainer.o smoothingdialog.o unitlist.o units.o thresholddialog.o adaptivethresholddialog.o cannydialog.o contoursdialog.o processing.o capture.o chainwindow.o chainviewer.o morphologydialog.o sobeldialog.o moc_mainwindow.o moc_videoviewer.o moc_ipunitcontainer.o moc_smoothingdialog.o moc_unitlist.o moc_thresholddialog.o moc_adaptivethresholddialog.o moc_cannydialog.o moc_contoursdialog.o moc_processing.o moc_capture.o moc_chainwindow.o moc_chainviewer.o moc_morphologydialog.o moc_sobeldialog.o -F/Applications/Qt/5.2.1/clang_64/lib -L/usr/local/lib/ -lIPChain /usr/local/Cellar/opencv/2.4.6.1/lib/libopencv_calib3d.dylib /usr/local/Cellar/opencv/2.4.6.1/lib/libopencv_contrib.dylib /usr/local/Cellar/opencv/2.4.6.1/lib/libopencv_core.dylib /usr/local/Cellar/opencv/2.4.6.1/lib/libopencv_features2d.dylib /usr/local/Cellar/opencv/2.4.6.1/lib/libopencv_flann.dylib /usr/local/Cellar/opencv/2.4.6.1/lib/libopencv_gpu.dylib /usr/local/Cellar/opencv/2.4.6.1/lib/libopencv_highgui.dylib /usr/local/Cellar/opencv/2.4.6.1/lib/libopencv_imgproc.dylib /usr/local/Cellar/opencv/2.4.6.1/lib/libopencv_legacy.dylib /usr/local/Cellar/opencv/2.4.6.1/lib/libopencv_ml.dylib /usr/local/Cellar/opencv/2.4.6.1/lib/libopencv_nonfree.dylib /usr/local/Cellar/opencv/2.4.6.1/lib/libopencv_objdetect.dylib /usr/local/Cellar/opencv/2.4.6.1/lib/libopencv_ocl.dylib /usr/local/Cellar/opencv/2.4.6.1/lib/libopencv_photo.dylib /usr/local/Cellar/opencv/2.4.6.1/lib/libopencv_stitching.dylib /usr/local/Cellar/opencv/2.4.6.1/lib/libopencv_superres.dylib /usr/local/Cellar/opencv/2.4.6.1/lib/libopencv_ts.dylib /usr/local/Cellar/opencv/2.4.6.1/lib/libopencv_video.dylib /usr/local/Cellar/opencv/2.4.6.1/lib/libopencv_videostab.dylib -framework QtWidgets -framework QtGui -framework QtCore -framework OpenGL -framework AGL
Undefined symbols for architecture x86_64:
"boost::system::system_category()", referenced from:
___cxx_global_var_init2 in main.o
___cxx_global_var_init2 in mainwindow.o
boost::thread_exception::thread_exception(int, char const*) in mainwindow.o
___cxx_global_var_init2 in videoviewer.o
___cxx_global_var_init6 in ipunitcontainer.o
___cxx_global_var_init6 in smoothingdialog.o
___cxx_global_var_init6 in unitlist.o
...
"boost::system::generic_category()", referenced from:
___cxx_global_var_init in main.o
___cxx_global_var_init1 in main.o
___cxx_global_var_init in mainwindow.o
___cxx_global_var_init1 in mainwindow.o
___cxx_global_var_init in videoviewer.o
___cxx_global_var_init1 in videoviewer.o
___cxx_global_var_init in ipunitcontainer.o
...
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [qt-rodbot-ip.app/Contents/MacOS/qt-rodbot-ip] Error 1
11:05:13: The process "/usr/bin/make" exited with code 2.
Error while building/deploying project qt-rodbot-ip (kit: Desktop Qt 5.2.1 clang 64bit)
When executing step 'Make'
11:05:13: Elapsed time: 00:02.
你用什么配置了qt5?您可以传递配置标志 -sdk/Applications/Xcode.app/Content/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk。这会将 sdk 设置为 macosx 10.9。据我所知,这与提升系统库有关。我猜你正在使用提升库。只需链接到 Boost.System,它应该在/opt/local/lib/libboost_system 中。
相关文章:
- 如何将SQLite c文件(合并)与cpp应用程序链接?
- 如何将我的控制台应用程序链接到使用 clang++ 作为编译器的 OSX 环境中的 /usr/local/lib 中存在
- 共享对象与提升program_options静态链接;应用程序链接共享
- 从 32 位应用程序挂接 64 位进程
- 32位应用程序链接到System32二进制文件,而不是SysWOW64
- 使用Visual Studio c++的Windows窗体应用程序,该应用程序链接到CUDA项目
- 在Visual Studio 2013中使用Qt和OpenCV创建应用程序链接问题
- C++:运行时将共享对象与主机应用程序链接,符号表问题
- OpenGL 着色器不与着色器程序链接
- 将 DLL 与应用程序链接时出现未知错误
- 将C++应用程序链接到 dll
- 创建要与C++程序链接的静态 CUDA 库
- 如何将C++/CLI程序编译到.lib中,并将其与纯非托管C++程序链接
- 交叉编译opencv应用时链接错误
- 是否有一种方法将我的GCL Lisp文件与Windows上的单独c++程序链接
- 无法将xerces2_7.dll与64位应用程序链接
- 从Qt应用程序链接到c++静态库
- 你能从一个C应用程序链接一个c++库吗?
- 通过 FFI 块从 Haskell 调用共享库,而从 C 程序链接时则不会
- 您是否可以拥有一个具有管理员权限的DLL,该DLL从仅具有用户级权限的客户端应用程序链接