macOS 如何同时安装 OpenSSL 的动态链接库 libssl.1.1.dylib 和 libssl.1.0.0.dylib? - V2EX
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 4893 次点击
    这是一个创建于 2063 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我遇到的情况是这样的,从 GitHub 下载了一个 C++的项目代码,然后 cmake 的时候出现了下面的报错信息

    ```
    dyld: Library not loaed: /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 ?,t/366463
    - MacOS Catalina Python 意外退出解决,t/609382
    - 请问升级 OpenSSL 的问题。,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
    FurN1
        7
    FurN1  
       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 有答案。
    shiltian
        9
    shiltian  
       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 这个 cur 是 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     Solana     819 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 21:26 PVG 05:26 LAX 13:26 JFK 16:26
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86