【问题标题】:How to link libcurl, libssl, uuid libs statically?如何静态链接 libcurl、libssl、uuid 库?
【发布时间】:2017-04-24 15:56:00
【问题描述】:

运行此命令:cmake -DCMAKE_BUILD_TYPE=Debug -DENABLE_TESTING=OFF -DBUILD_ONLY="s3" -DFORCE_SHARED_CRT=OFF -DBUILD_SHARED_LIBS=OFF <aws-sdk-src> 始终链接到共享 libcurl、ssl 库,正如您从(截断的)CMAKE 输出中看到的那样:

-- Found ZLIB: /usr/lib/x86_64-linux-gnu/libz.so (found version "1.2.8") 
--   Zlib include directory: /usr/include
--   Zlib library: /usr/lib/x86_64-linux-gnu/libz.so
-- Encryption: Openssl
-- Found OpenSSL: /usr/lib/x86_64-linux-gnu/libssl.so;/usr/lib/x86_64-linux-gnu/libcrypto.so (found version "1.0.2g") 
--   Openssl include directory: /usr/include
--   Openssl library: /usr/lib/x86_64-linux-gnu/libssl.so;/usr/lib/x86_64-linux-gnu/libcrypto.so
-- Http client: Curl
-- Found CURL: /usr/lib/x86_64-linux-gnu/libcurl.so (found version "7.47.0") 
--   Curl include directory: /usr/include
--   Curl library: /usr/lib/x86_64-linux-gnu/libcurl.so
-- Considering s3

如何强制它链接 libz.a、libcurl.a?

【问题讨论】:

    标签: cmake aws-sdk-cpp


    【解决方案1】:

    由于库主要通过find_library 命令搜索,您可以设置变量CMAKE_FIND_LIBRARY_SUFFIXES 以影响搜索到的扩展。

    通过指定单个扩展名

    -DCMAKE_FIND_LIBRARY_SUFFIXES=.a
    

    您将强制仅搜索静态库。

    通过指定多个扩展名

    "-DCMAKE_FIND_LIBRARY_SUFFIXES=.a;.so"
    

    您告诉 CMake更喜欢静态库 (.a) 而非共享库 (.so)。

    【讨论】:

    • 试过 -DCMAKE_FIND_LIBRARY_SUFFIXES,但它不起作用。它仍然链接到共享库。没有错误。我验证了静态库就在共享库旁边。
    • 是的。我确保我开始干净了。基本上在使用 -DCMAKE_FIND_LIBRARY_SUFFIXES 选项运行命令之前删除了所有 CMake 生成的文件。
    猜你喜欢
    • 2015-04-27
    • 1970-01-01
    • 2011-11-08
    • 1970-01-01
    • 2011-11-14
    • 2016-01-28
    • 2020-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多