C++ 旗帜'-l';在CMAKE#U CXX#U中,标志不';行不通

C++ 旗帜'-l';在CMAKE#U CXX#U中,标志不';行不通,c++,linux,curl,cmake,shared-libraries,C++,Linux,Curl,Cmake,Shared Libraries,我在我的mac机器上写了一些代码,它一直工作得很好,但是当我把它移植到Linux机器上时,我得到了对curl\u easy\u init的未定义的引用 我的编译器标志包括用于链接的-lcurl 以下是我链接的方式: set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -L/curl/lib/dir -lcurl") 我试过使用和不使用-L/curl/lib/dir Curl安装在此计算机上: $ curl --version curl 7.47

我在我的mac机器上写了一些代码,它一直工作得很好,但是当我把它移植到Linux机器上时,我得到了对curl\u easy\u init的
未定义的引用

我的编译器标志包括用于链接的
-lcurl

以下是我链接的方式:

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -L/curl/lib/dir -lcurl")
我试过使用和不使用
-L/curl/lib/dir

Curl安装在此计算机上:

$ curl --version
curl 7.47.0 (x86_64-pc-linux-gnu) libcurl/7.47.0 GnuTLS/3.4.10 zlib/1.2.8 libidn/1.32 librtmp/2.3
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smb smbs smtp smtps telnet tftp 
Features: AsynchDNS IDN IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz TLS-SRP UnixSockets 

从不
-l
标志添加到CMAKE\u EXE\u链接器\u标志,并且添加到CMAKE\u CXX\u标志(标志
-l
用于链接器,而不是编译器)

与图书馆的链接用途:专门用于此目的:

target_link_libraries(<your-executable> curl)
目标链接库(curl)

将标志添加到
*\u FLAGS
变量时,该标志将添加到链接器命令行中源文件(实际上是对象文件)之前的。如果源文件使用库中的某些函数,则链接器无法找到它


与此相反,由命令
target\u link\u libraries
生成的标志被添加到链接器命令行的源文件之后。

Hi!这是libcurl*库所在的/curl/lib/dir吗?您使用的是系统curl还是自己编译的?我认为它们不在这里。运行
curl-config--libs
它返回
-L/usr/lib/x86_64-linux-gnu-lcurl
。我想这应该是实际的标志,但即使是这样,同样的错误.so-lcurl也应该足够了。cat/etc/ld.so.conf.d/x86_64-linux-gnu.conf是怎么说的?该命令给出了这一点。而且,
-lcurl
足以在我的mac上工作<代码>#多拱支持/lib/x86_64-linux-gnu/usr/lib/x86_64-linux-gnu