V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
johannhuang
V2EX  ›  macOS

macOS 如何同时安装 OpenSSL 的动态链接库 libssl.1.1.dylib 和 libssl.1.0.0.dylib?

  •  
  •   johannhuang · 2020-04-27 21:16:43 +08:00 · 4383 次点击
    这是一个创建于 1694 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我遇到的情况是这样的,从 GitHub 下载了一个 C++的项目代码,然后 cmake 的时候出现了下面的报错信息

    ```
    dyld: Library not loaded: /opt/local/lib/libssl.1.0.0.dylib
    Referenced from: /opt/local/lib/libcurl.4.dylib
    Reason: image not found
    Abort trap: 6
    ```

    我的 OpenSSL 是经过 Homebrew 新安装过的,所以我能在 /opt/local/lib/目录下找到 libssl.dylib, libssl.a, libssl.1.1.dylib 。也就是很明显,现在的最新版就是 1.1,然而不知道项目里面那个地方使用了 libcurl,而 libcurl 似乎硬性指定了使用 libssl.1.0.0.dylib (我对 C++编译系统理解有限,也许是其他环境变量设置问题),所以因为缺少 1.0.。0 版本导致报错。

    所以各位技术朋友,你们指定 macOS 上怎么同时优雅的存在 libssl.1.1.dylib 以及 libssl.1.0.0.dylib 么?
    第 1 条附言  ·  2020-04-30 02:58:15 +08:00
    追加一帖,希望对后来的人有帮助吧。

    我的问题解决了,是因为 MacPorts 的环境变量在前面,而且 MacPorts 也安装了 curl 和 libssl 两个库,所以使用了老旧的版本,导致报错。我通过升级 MacPorts 里面的包到最新版胜利完成了编译。(特征是动态链接库的路径是在 opt 下面)
    希望对遇到类似问题的朋友有帮助吧。

    另外,题目中的问题还是待解决,但也算是并不着急的问题吧。
    16 条回复    2020-04-28 15:55:43 +08:00
    johannhuang
        1
    johannhuang  
    OP
       2020-04-27 21:19:43 +08:00
    V2 上的相关问题及链接

    - 哪里下载 libssl.so.1.0.0 和 libcrypt.so.1.0.0 ?,https://www.v2ex.com/t/366463
    - MacOS Catalina Python 意外退出解决,https://www.v2ex.com/t/609382
    - 请问升级 OpenSSL 的问题。,https://www.v2ex.com/t/654914

    然而,上面问题的解决办法我担心会破坏本身使用新版 libssl1.1.dylib 的情况。
    johannhuang
        2
    johannhuang  
    OP
       2020-04-27 21:29:50 +08:00
    问题感觉还是应该从解决 libcurl 入手,因为我强行 给 1.0.0 加链接到 1.1 后,还是报错了。

    ```
    dyld: Symbol not found: _MD5_Final
    Referenced from: /opt/local/lib/libcurl.4.dylib
    Expected in: /opt/local/lib/libcrypto.1.0.0.dylib
    in /opt/local/lib/libcurl.4.dylib
    Abort trap: 6
    ```
    Kobayashi
        3
    Kobayashi  
       2020-04-27 22:41:16 +08:00 via Android
    把项目发出来,等楼下。
    lcdtyph
        4
    lcdtyph  
       2020-04-27 22:43:58 +08:00
    /opt/local 不是 macports 的 prefix 吗?
    arischow
        5
    arischow  
       2020-04-27 22:45:14 +08:00
    我上次跑 wget 出现类似错误,于是我 brew reinstall wget
    arischow
        6
    arischow  
       2020-04-27 22:45:59 +08:00
    楼上说得有点道理,看起来 prefix 不是 homebrew 🉐️
    IgniteWhite
        7
    IgniteWhite  
       2020-04-27 23:23:12 +08:00
    prefix 一般是 /usr/local
    arischow
        8
    arischow  
       2020-04-27 23:35:45 +08:00 via iPhone
    brew switch 了解一下,另 你这个问题 Google 有答案。
    tianshilei1992
        9
    tianshilei1992  
       2020-04-27 23:53:25 +08:00
    CMake 查找 library 的规则是 hard code 在 CMake 自己里面的。不妨试试有什么环境变量可以让 CMake 优先去查找你自己装的这个 library path 。
    还有一个办法就是(一定会成功),找找 find_library(ssl) 成功以后会设置哪些 CMake 的变量,然后在 CMake 的时候把这几个变量手动指定进去就好了。
    johannhuang
        10
    johannhuang  
    OP
       2020-04-28 03:11:48 +08:00
    @arischow 我这个问题 Goolge 上有很多错误答案。要不然也不会在这里贴出来求助了。
    johannhuang
        11
    johannhuang  
    OP
       2020-04-28 03:13:44 +08:00
    @Kobayashi 这个和项目没啥关系了,因为错误报的算是很明确了。就是这玩意儿 /opt/local/lib/libcurl.4.dylib 引用不到想要的动态链接库了。
    johannhuang
        12
    johannhuang  
    OP
       2020-04-28 04:23:17 +08:00
    @lcdtyph 谢谢 应该就是你说的 macports 搞事情了。我之前用过 macports,可能就是被 ports 搞出问题了。
    lcdtyph
        13
    lcdtyph  
       2020-04-28 04:27:24 +08:00
    @johannhuang #12
    你可以都用 homebrew 的组件,brew install curl-openssl 这个 curl 是 link 到 brew 自己的 openssl1.1 的
    如果你不需要 macports 的话最好把它的路径从环境变量里移除
    johannhuang
        14
    johannhuang  
    OP
       2020-04-28 04:41:09 +08:00
    问题相关链接,以防有后来的小伙伴遇到同样的问题 https://stackoverflow.com/questions/44290925/curl-gives-an-error-on-mac-os
    Kobayashi
        15
    Kobayashi  
       2020-04-28 12:04:35 +08:00 via Android
    你这是 macports 没卸载啊?环境变量 PATH 里还有 /opt/local/bin
    johannhuang
        16
    johannhuang  
    OP
       2020-04-28 15:55:43 +08:00
    @lcdtyph 我把 macports 的包升级了后就可以了。Homebrew 使用的 link 的方式,MacPorts 用的环境变量前置,我还是想都留着的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5160 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 06:50 · PVG 14:50 · LAX 22:50 · JFK 01:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.