遇到的问题:

最近在尝试使用动态库,编译没有问题,但运行时报错,这对于第一次使用动态库来说,简直是个巨大的打击。开始一直以为动态库没能加载是路径选择错误,浪费的大把时间。仔细看日志后,发现动态库居然要签名,不签名就不让用,好像是从maxOS 10.14开始搞的事情:

dyld: Library not loaded: /usr/local/opt/opencv/lib/libopencv_flann.4.1.dylib
Referenced from: /Users/xxx/Library/Developer/Xcode/DerivedData/OpenCV-frdcgrfkxsvbyahjaonnyllerinn/Build/Products/Debug/OpenCV
Reason: no suitable image found. Did find:
/usr/local/opt/opencv/lib/libopencv_flann.4.1.dylib: code signature in (/usr/local/opt/opencv/lib/libopencv_flann.4.1.dylib) not valid for use in process using Library Validation: mapped file has no cdhash, completely unsigned? Code has to be at least ad-hoc signed.
/usr/local/lib/libopencv_flann.4.1.dylib: code signature in (/usr/local/lib/libopencv_flann.4.1.dylib) not valid for use in process using Library Validation: mapped file has no cdhash, completely unsigned? Code has to be at least ad-hoc signed.
/usr/local/Cellar/opencv/4.1.1_2/lib/libopencv_flann.4.1.1.dylib: code signature in (/usr/local/Cellar/opencv/4.1.1_2/lib/libopencv_flann.4.1.1.dylib) not valid for use in process using Library Validation: mapped file has no cdhash, completely unsigned? Code has to be at least ad-hoc signed.

关键错误信息是:code signature in (*.dylib) not valid for use in process using Library Validation: mapped file has no cdhash, completely unsigned? Code has to be at least ad-hoc signed.

安装错误提示,需要对dylib进行签名。

签名步骤:

1. 复制证书名称

先打开keychain Access.app (中文名是:钥匙串访问),选择你的证书,复制证书名称。

2. 签名命令如下:

codesign -f -s "Mac Developer: 你的开发者邮箱" xxx.dylib

当你对报错的dylib进行签名后,会发现还要你对别的dylib也签名,于是就陷入了签名的死循环里,不停的签名。

3. 解决签名的循环坑:

直接将系统的全部dylib都进行签名:

codesign -f -s "Mac Developer: 你的开发者邮箱" /usr/local/opt/*/lib/*.dylib

该命令将目录/usr/local/opt下的全面dylib都进行了签名,也就是说,XCode编译代码时依赖的系统库,全部都被签名了。如果你还依赖了别的动态库,需要再单独进行签名。

总结:

动态库引入签名,本意是好的,但是强制要求签名,还是挺坑人的。

关于签名的其他命令操作:

  1. 清除动态库的签名:
codesign --remove-signature xxx.dylib
  1. 查看签名:
codesign -v xxx.dylib
  1. 重新签名:
    codesign的-f参数就是强制签名的意思,本文使用的codesign -f -s就能直接重新签名。如果不想覆盖原来的签名,可以把-f参数去掉。

XCode 动态库未签名问题的解决相关推荐

  1. ios .framework动态库重签名

    真机上运行.framework时,如果报 dyld'dyld_fatal_error:dyld: Library not loaded: @rpath/XX.framework/XXReference ...

  2. linux编译动态库未定义,自定义动态库 对‘*’未定义的引用解决方法

    自定义动态库 对'*'未定义的引用 本帖最后由 longruliang 于 2015-05-25 16:02:26 编辑 自己编写了一个串口方面的动态库,想写一个测试程序,在编译的时候冒出对'*'未定 ...

  3. linux编译动态库未定义,GCC链接库的一个坑:动态库存在却提示未定义动态库的函数...

    背景 在GCC中已经指定链接库,然而编译时却提示动态库函数未定义! 测试出现的错误提示如下: [GMPY@13:48 tmp]$gcc -o test -L. -lmylib test.c /tmp/ ...

  4. linux编译动态库未定义,linux 编译动态链接库 so,避免运行时才发现函数未 ......

    ldd  查看 elf文件依赖的  so 动态链接库 可以  export LD_LIBRARY_PATH=/path 设置 so文件的路径, nm  -u  *.so  或者 nm |grep  U ...

  5. [DLL] DLL动态库没有生成LIB的解决方法

    在导出函数在声明和定义时,都一定要有关键字 _declspec(dllexport)  ,这样才会同时生成 .dll 和 .lib 文件. demo: 接口头文件: #pragma onceexter ...

  6. macOS下加载动态库dylib报code signature invalid错误的解决办法

    一.现象描述 在macOS上搞开发也有一段时间了,也积攒了一定的经验.然而,今天在替换工程中的一个动态库时还是碰到了一个问题.原来工程中用的是一个静态库,调试时发现有问题就把它替换成了动态库.这本来没 ...

  7. 解决Linux多个动态库间的符号冲突问题

    c和c++开发人员或多或少都使用过Linux动态库,但是很多时候我们都不会去深入了解其中的一些细节和原理,直到自己的程序出现莫名其妙的问题后才会去着手解决,我也是在遇到一些动态库的问题后才去深入寻找解 ...

  8. ios动态库注入把越狱手机上自制的动态库安装到普通手机上

    文章目录 预备条件 导出越狱手机上的app包和自己注入的动态库 导出自己写的tweak动态库文件 查看依赖库 执行命令查看程序依赖的动态库名字 用machoview查看 安装insert_dylib ...

  9. 黑科技:把第三方 iOS 应用转成动态库

    推荐序 本文作者杨君,他之前投稿过一篇安全方面的文章:iOS 符号表恢复 & 逆向支付宝,这次他在国庆期间又发来一篇大作.本文介绍的黑科技非常牛逼,可以将别人的 iOS 应用转成动态库. 看完 ...

  10. python调用c++动态库 linux_linux中使用boost.python调用c++动态库的方法

    前言 最近开始使用 robot framework 测试c++的动态库,robot framework 是跑在 windows 上面,c++动态库是跑在远程linux主机上面.测试办法是让 robot ...

最新文章

  1. Hyperledger Fabric 核心模块(4)orderer 共识
  2. 读书印记 - 《异类:不一样的成功启示录》
  3. python open permission denied_python - Image.open PermissionError:[Errno 13]权限被拒绝: - 堆栈内存溢出...
  4. 插图 引用 同一行两个插图_将图标变成插图的五个简单步骤
  5. ssh 看apache_使用Apache KeyedObjectPool的ssh连接池
  6. mysql datatype 类型_MySQL DataType--数值类型
  7. 中国料斗底部谷物拖车市场趋势报告、技术动态创新及市场预测
  8. centos6.3 mysql安装_CentOS 6.3 安装MySQL-5.7.10
  9. CART剪枝算法详解
  10. c语言硬币个数最小值,c语言 PTA day4 将一笔零钱换成5分、2分和1分的硬币,要求每种硬币至少有一枚,有几种不同的换法?...
  11. 45本程序员圣经级别书籍,包邮送到家
  12. s7五杀大数据英雄_王者七大记录,五杀最多的英雄竟然有他?这英雄跑的比关羽还快!...
  13. Word 框里面打钩
  14. vue2 qrcodejs2链接生成二维码
  15. jshint详细说明【vscode插件】
  16. ssh与scp 连接机器与传输文件
  17. ClinChoice昆翎完成对莱必宜的并购;西湖欧米完成Pre-A轮数亿元融资 | 医药健闻...
  18. 如何设置设备ip,以及设置局域网
  19. NYOJ 638 小媛在努力(水)
  20. 微网-并网逆变器-下垂控制-Droop Conrol

热门文章

  1. 浅谈公安350兆集群通信网建设
  2. 程序员996可还好?某公司强制实行997、007,网友:钱给到位了吗?
  3. html制作调色板,JS实现系统调色板
  4. 机器学习进阶 第一节 第一课
  5. MATLAB 内积外积混合积
  6. 顶级区块链开发人员工具:涉及框架、IDE、安全工具、测试网络、区块链预言机和节点服务
  7. 【表格】从1G到5G的移动通信发展历程(精简版)
  8. 这些高逼格的网站设计,能看到无数美的东西~
  9. 淘宝网站的设计与排版
  10. 深入浅出mysql_深入浅出MySQL读书笔记(一)