C++ 如何在c++;?

C++ 如何在c++;?,c++,compilation,linker,C++,Compilation,Linker,我正在使用facebook的proxygen库构建一个简单的客户端示例。在一个目录中,我有两个对象文件如何链接它们: 我正在使用: g++ -std=c++11 -o my_echo CurlClientMain.o CurlClient.o -lproxygenhttpserver -lfolly -lglog -lgflags -pthread 我想我在上面的例子中遗漏了一些链接器标志,比如-lgflags。在包含some-someflag之后,可能会有助于编译。我如何知道所有可能的库标

我正在使用facebook的proxygen库构建一个简单的客户端示例。在一个目录中,我有两个对象文件如何链接它们: 我正在使用:

g++ -std=c++11 -o my_echo CurlClientMain.o  CurlClient.o -lproxygenhttpserver -lfolly -lglog -lgflags -pthread
我想我在上面的例子中遗漏了一些链接器标志,比如-lgflags。在包含some-someflag之后,可能会有助于编译。我如何知道所有可能的库标志都是什么样的,就像他们使用的一样-lproxyhttpserver

简而言之,所有这些LIB的定义或位置都在哪里。我正在使用ubuntu

以下是我的错误消息

 In function `main':
/home/kshitij/proxygen/httpclient/samples/curl/CurlClientMain.cpp:91: undefined reference to `proxygen::HTTPConnector::HTTPConnector(proxygen::HTTPConnector::Callback*, folly::HHWheelTimer*)'
/home/kshitij/proxygen/httpclient/samples/curl/CurlClientMain.cpp:102: undefined reference to `proxygen::HTTPConnector::connect(folly::EventBase*, folly::SocketAddress const&, std::chrono::duration<long, std::ratio<1l, 1000l> >, std::map<folly::AsyncSocket::OptionKey, int, std::less<folly::AsyncSocket::OptionKey>, std::allocator<std::pair<folly::AsyncSocket::OptionKey const, int> > > const&, folly::SocketAddress const&)'
/home/kshitij/proxygen/httpclient/samples/curl/CurlClientMain.cpp:91: undefined reference to `proxygen::HTTPConnector::~HTTPConnector()'
/home/kshitij/proxygen/httpclient/samples/curl/CurlClientMain.cpp:99: undefined reference to `proxygen::HTTPConnector::connectSSL(folly::EventBase*, folly::SocketAddress const&, std::shared_ptr<folly::SSLContext> const&, ssl_session_st*, std::chrono::duration<long, std::ratio<1l, 1000l> >, std::map<folly::AsyncSocket::OptionKey, int, std::less<folly::AsyncSocket::OptionKey>, std::allocator<std::pair<folly::AsyncSocket::OptionKey const, int> > > const&, folly::SocketAddress const&, std::string const&)'
/home/kshitij/proxygen/httpclient/samples/curl/CurlClientMain.cpp:91: undefined reference to `proxygen::HTTPConnector::~HTTPConnector()'
CurlClient.o: In function `CurlService::CurlClient::connectSuccess(proxygen::HTTPUpstreamSession*)':
/home/kshitij/proxygen/httpclient/samples/curl/CurlClient.cpp:69: undefined reference to `proxygen::HTTPUpstreamSession::newTransaction(proxygen::HTTPTransactionHandler*)'
collect2: error: ld returned 1 exit status
kshitij@forgetit:~/proxygen/httpclient/samples/curl$ g++ -std=c++11 -o my_echo CurlClientMain.o  CurlClient.o -lproxygenhttpserver -lfolly -lglog -lgflags -pthread
CurlClientMain.o: In function `main':
/home/kshitij/proxygen/httpclient/samples/curl/CurlClientMain.cpp:91: undefined reference to `proxygen::HTTPConnector::HTTPConnector(proxygen::HTTPConnector::Callback*, folly::HHWheelTimer*)'
/home/kshitij/proxygen/httpclient/samples/curl/CurlClientMain.cpp:102: undefined reference to `proxygen::HTTPConnector::connect(folly::EventBase*, folly::SocketAddress const&, std::chrono::duration<long, std::ratio<1l, 1000l> >, std::map<folly::AsyncSocket::OptionKey, int, std::less<folly::AsyncSocket::OptionKey>, std::allocator<std::pair<folly::AsyncSocket::OptionKey const, int> > > const&, folly::SocketAddress const&)'
/home/kshitij/proxygen/httpclient/samples/curl/CurlClientMain.cpp:91: undefined reference to `proxygen::HTTPConnector::~HTTPConnector()'
/home/kshitij/proxygen/httpclient/samples/curl/CurlClientMain.cpp:99: undefined reference to `proxygen::HTTPConnector::connectSSL(folly::EventBase*, folly::SocketAddress const&, std::shared_ptr<folly::SSLContext> const&, ssl_session_st*, std::chrono::duration<long, std::ratio<1l, 1000l> >, std::map<folly::AsyncSocket::OptionKey, int, std::less<folly::AsyncSocket::OptionKey>, std::allocator<std::pair<folly::AsyncSocket::OptionKey const, int> > > const&, folly::SocketAddress const&, std::string const&)'
/home/kshitij/proxygen/httpclient/samples/curl/CurlClientMain.cpp:91: undefined reference to `proxygen::HTTPConnector::~HTTPConnector()'
CurlClient.o: In function `CurlService::CurlClient::connectSuccess(proxygen::HTTPUpstreamSession*)':
/home/kshitij/proxygen/httpclient/samples/curl/CurlClient.cpp:69: undefined reference to `proxygen::HTTPUpstreamSession::newTransaction(proxygen::HTTPTransactionHandler*)'
collect2: error: ld returned 1 exit status
函数“main”中的
:
/home/kshitij/proxygen/httpclient/samples/curl/CurlClientMain.cpp:91:对“proxygen::HTTPConnector::HTTPConnector”(proxygen::HTTPConnector::Callback*,folly::hwheeltimer*)的未定义引用
/home/kshitij/proxygen/httpclient/samples/curl/CurlClientMain.cpp:102:对“proxygen::HTTPConnector::connect(folly::EventBase*,folly::SocketAddress const&,std::chrono::duration,std::map const&,folly::SocketAddress const&)”的未定义引用
/home/kshitij/proxygen/httpclient/samples/curl/CurlClientMain.cpp:91:未定义对“proxygen::HTTPConnector::~HTTPConnector()”的引用
/home/kshitij/proxygen/httpclient/samples/curl/CurlClientMain.cpp:99:对“proxygen::HTTPConnector::connectSSL(folly::EventBase*,folly::SocketAddress const&,std::shared_ptr const&,ssl_session_st*,std::chrono::duration,std::map const&,folly::SocketAddress const&,std::string const&)”的未定义引用
/home/kshitij/proxygen/httpclient/samples/curl/CurlClientMain.cpp:91:未定义对“proxygen::HTTPConnector::~HTTPConnector()”的引用
CurlClient.o:在函数“CurlService::CurlClient::connectSuccess(proxygen::HTTPUpstreamSession*)”中:
/home/kshitij/proxygen/httpclient/samples/curl/CurlClient.cpp:69:对“proxygen::HTTPUpstreamSession::newTransaction(proxygen::HTTPTransactionHandler*)”的未定义引用
collect2:错误:ld返回了1个退出状态
kshitij@forgetit:~/proxygen/httpclient/samples/curl$g++-std=c++11-o my_echo CurlClientMain.o CurlClient.o-lproxygenhttpserver-lfolly-lglog-lgflags-pthread
o:在函数'main'中:
/home/kshitij/proxygen/httpclient/samples/curl/CurlClientMain.cpp:91:对“proxygen::HTTPConnector::HTTPConnector”(proxygen::HTTPConnector::Callback*,folly::hwheeltimer*)的未定义引用
/home/kshitij/proxygen/httpclient/samples/curl/CurlClientMain.cpp:102:对“proxygen::HTTPConnector::connect(folly::EventBase*,folly::SocketAddress const&,std::chrono::duration,std::map const&,folly::SocketAddress const&)”的未定义引用
/home/kshitij/proxygen/httpclient/samples/curl/CurlClientMain.cpp:91:未定义对“proxygen::HTTPConnector::~HTTPConnector()”的引用
/home/kshitij/proxygen/httpclient/samples/curl/CurlClientMain.cpp:99:对“proxygen::HTTPConnector::connectSSL(folly::EventBase*,folly::SocketAddress const&,std::shared_ptr const&,ssl_session_st*,std::chrono::duration,std::map const&,folly::SocketAddress const&,std::string const&)”的未定义引用
/home/kshitij/proxygen/httpclient/samples/curl/CurlClientMain.cpp:91:未定义对“proxygen::HTTPConnector::~HTTPConnector()”的引用
CurlClient.o:在函数“CurlService::CurlClient::connectSuccess(proxygen::HTTPUpstreamSession*)”中:
/home/kshitij/proxygen/httpclient/samples/curl/CurlClient.cpp:69:对“proxygen::HTTPUpstreamSession::newTransaction(proxygen::HTTPTransactionHandler*)”的未定义引用
collect2:错误:ld返回了1个退出状态
我如何知道所有可能的库标志都是什么样的,就像他们使用的一样-lproxyhttpserver

这取决于您的编译环境

您似乎在linux中使用GNU编译器。有一个工具可以列出所有已安装的共享库:

ldconfig -p
您将得到一个这样的行列表

libpthread.so.0 (libc6,x86-64, OS ABI: Linux 2.6.32) => /lib/x86_64-linux-gnu/libpthread.so.0
删除
lib
前缀和扩展名
.so.X
,就可以得到库的名称。在本例中,它是
pthread
。要与库链接,请使用选项
-lNAME
。因此,在本例中,
-lpthread

简言之,所有这些LIB的定义或位置在哪里


=>
的右侧部分是库的完整路径。

您得到的确切错误消息是什么?@πάνταῥεῖ 未定义的引用错误…:我正在编辑带有错误消息的问题
-lsomething
只是查找
libsomething.a
/
.so
在配置的库路径中(默认值通常是
/lib
/usr/lib加上下面的一些其他内容,有多拱支持);您可以在这些目录中找到已安装的库。@MatteoItalia我查看了它,但为什么会出现这些未定义的引用错误。我知道错误是由链接器引起的。我有两个对象文件,我用来链接和构建的命令已经提到了。什么会导致错误?只是吹毛求疵,但在这种情况下,
lib
实际上是一个前缀:)