zoukankan      html  css  js  c++  java
  • MACBOOK M1 PRO 下运行.NET CORE(MAC下如何与X86_64兼容)

    解决“No usable version of libssl was found“

    最近调试一个项目,其他都好好地,就是这个项目出现各种诡异的问题,也没有stack_trace,卡了好久,今天发现最后一行小字No usable version of libssl was found ,终于按图索骥解决了。

    这是一个.net 5.0的项目,开始我挺担心它在ARM下不兼容的问题,但是可以顺利在Rider中成功build并运行,不得不说苹果的兼容生态和Rider的适配做的太好了,也正是因为这种错觉才让我大意了吧,所以如果您使用的是.net6那么可以忽略,6以下请耐心看完。项目运行后点击登录程序就退出了,期间没有任何debug信息,只有一行灰色小字:

    第一次看到这行小字特地用brew 确认了下openssl是否已经安装,所以放过了它,这里要强调.net1到5都是不支持arm的,之所以能顺利build完全是苹果已经用Rosetta偷偷在背后运行了。

    Rosetta

    这是苹果用来兼容x86的转义器,有了它mac就可以跑x86程序了,惊讶的是几十M的小东西可以如此稳定高效。正因为有了它,普通用户完全不需要关心程序是x86还是arm的只接可以运行。当然作为开发需要知道背后的原理,苹果在x86和arch背后独立设置了一套生态,用于分别运行相应的程序,所以上面的问题就变成了缺少x86版本的libssl。

    X86 HomeBrew

    要装x86的libssl就要先装x86的HomeBrew,如果你跟我一样是从原来intel的mbp迁移过来的那它已经安装好了,如果不是就需要手动安装,下面是手动安装的步骤:

    $ arch -x86_64 zsh

    $ cd /usr/local && mkdir homebrew

    $ curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C homebrew

    Alias快捷别名

    ibrew='arch -x86_64 /usr/local/bin/brew'
    izsh='arch -x86_64 zsh'
    azsh='arch -arm64e zsh'

    安装Openssl

    ibrew install openssl

    记得运行前先用izsh切换到x86环境下,它才会使用Rosetta安装到x86生态中去,同理可以使用azsh切换回来。

    环境设置libssl引用

    DYLD_LIBRARY_PATH=”/usr/local/opt/openssl@1.1/lib”

    Tips

    这里注意的是只要是x86苹果使用的路径跟以前一样都是在/usr/local/bin下,而arch的都是丢在/opt/homebrew/bin下。

    前面环境变量最好是在项目文件中设置,这样不会全局影响到.net6的运行。

    参考资料:

    作者:KKcat
        
    个人博客:http://jinzhao.me/
        
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    爬虫助手spider_tool-JUN
    frida 保存打印日志到本地
    frida get_frontmost_application报错
    adb shell安装证书/修改证书到系统级/
    利用celery进行分布式爬虫
    vscode Go插件安装失败解决方法,亲测2020.10.15
    Frida hook map集合遍历和修改
    frida_rpc dou音、饿le么 header加密
    Frida入门
    adb连接模拟器
  • 原文地址:https://www.cnblogs.com/jinzhao/p/15662791.html
Copyright © 2011-2022 走看看