如何正确链接/包含 c++ 库

Posted

技术标签:

【中文标题】如何正确链接/包含 c++ 库【英文标题】:How to link/include c++ libraries correctly 【发布时间】:2020-06-26 12:36:52 【问题描述】:

我试图用https://github.com/yhirose/cpp-httplib "one-header" 库编译程序。我写了

#include "httplib.h"
/* example code from main github page */

当我尝试编译程序时

g++ -std=c++11 -o test test.cc

我收到了这个错误:

/usr/bin/ld: /tmp/ccYMj4l8.o: in function `std::thread::thread<httplib::ThreadPool::worker, , void>(httplib::ThreadPool::worker&&)':
test.cc:(.text._ZNSt6threadC2IN7httplib10ThreadPool6workerEJEvEEOT_DpOT0_[_ZNSt6threadC5IN7httplib10ThreadPool6workerEJEvEEOT_DpOT0_]+0x2f): undefined reference to `pthread_create'
collect2: error: ld returned 1 exit status

我能做什么? 以及如何链接具有includesrc 目录的库,例如libcurl

【问题讨论】:

这能回答你的问题吗? Undefined reference to pthread_create in Linux 【参考方案1】:

这是 gcc 已知的特殊功能,它的 std::thread 实现是建立在 pthreads 之上的,因此它需要指定 -pthread 才能正确地将程序与线程链接。

【讨论】:

以上是关于如何正确链接/包含 c++ 库的主要内容,如果未能解决你的问题,请参考以下文章

如何正确包含来自 NVIDIA C++ 标准库的文件?

如何在适用于 Android 和 iOS 的 C++ 跨平台库中正确链接 OpenCV?

C++ 标准库如何链接到我的应用程序?

如何正确链接 Linux 上的 lua 库?

如何在 CMake 中正确创建目标之间的依赖关系?

如何正确安装 c++ cpr