XCode 动态库未签名问题的解决
遇到的问题:
最近在尝试使用动态库,编译没有问题,但运行时报错,这对于第一次使用动态库来说,简直是个巨大的打击。开始一直以为动态库没能加载是路径选择错误,浪费的大把时间。仔细看日志后,发现动态库居然要签名,不签名就不让用,好像是从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编译代码时依赖的系统库,全部都被签名了。如果你还依赖了别的动态库,需要再单独进行签名。
总结:
动态库引入签名,本意是好的,但是强制要求签名,还是挺坑人的。
关于签名的其他命令操作:
- 清除动态库的签名:
codesign --remove-signature xxx.dylib
- 查看签名:
codesign -v xxx.dylib
- 重新签名:
codesign的-f参数就是强制签名的意思,本文使用的codesign -f -s
就能直接重新签名。如果不想覆盖原来的签名,可以把-f
参数去掉。
XCode 动态库未签名问题的解决相关推荐
- ios .framework动态库重签名
真机上运行.framework时,如果报 dyld'dyld_fatal_error:dyld: Library not loaded: @rpath/XX.framework/XXReference ...
- linux编译动态库未定义,自定义动态库 对‘*’未定义的引用解决方法
自定义动态库 对'*'未定义的引用 本帖最后由 longruliang 于 2015-05-25 16:02:26 编辑 自己编写了一个串口方面的动态库,想写一个测试程序,在编译的时候冒出对'*'未定 ...
- linux编译动态库未定义,GCC链接库的一个坑:动态库存在却提示未定义动态库的函数...
背景 在GCC中已经指定链接库,然而编译时却提示动态库函数未定义! 测试出现的错误提示如下: [GMPY@13:48 tmp]$gcc -o test -L. -lmylib test.c /tmp/ ...
- linux编译动态库未定义,linux 编译动态链接库 so,避免运行时才发现函数未 ......
ldd 查看 elf文件依赖的 so 动态链接库 可以 export LD_LIBRARY_PATH=/path 设置 so文件的路径, nm -u *.so 或者 nm |grep U ...
- [DLL] DLL动态库没有生成LIB的解决方法
在导出函数在声明和定义时,都一定要有关键字 _declspec(dllexport) ,这样才会同时生成 .dll 和 .lib 文件. demo: 接口头文件: #pragma onceexter ...
- macOS下加载动态库dylib报code signature invalid错误的解决办法
一.现象描述 在macOS上搞开发也有一段时间了,也积攒了一定的经验.然而,今天在替换工程中的一个动态库时还是碰到了一个问题.原来工程中用的是一个静态库,调试时发现有问题就把它替换成了动态库.这本来没 ...
- 解决Linux多个动态库间的符号冲突问题
c和c++开发人员或多或少都使用过Linux动态库,但是很多时候我们都不会去深入了解其中的一些细节和原理,直到自己的程序出现莫名其妙的问题后才会去着手解决,我也是在遇到一些动态库的问题后才去深入寻找解 ...
- ios动态库注入把越狱手机上自制的动态库安装到普通手机上
文章目录 预备条件 导出越狱手机上的app包和自己注入的动态库 导出自己写的tweak动态库文件 查看依赖库 执行命令查看程序依赖的动态库名字 用machoview查看 安装insert_dylib ...
- 黑科技:把第三方 iOS 应用转成动态库
推荐序 本文作者杨君,他之前投稿过一篇安全方面的文章:iOS 符号表恢复 & 逆向支付宝,这次他在国庆期间又发来一篇大作.本文介绍的黑科技非常牛逼,可以将别人的 iOS 应用转成动态库. 看完 ...
- python调用c++动态库 linux_linux中使用boost.python调用c++动态库的方法
前言 最近开始使用 robot framework 测试c++的动态库,robot framework 是跑在 windows 上面,c++动态库是跑在远程linux主机上面.测试办法是让 robot ...
最新文章
- Hyperledger Fabric 核心模块(4)orderer 共识
- 读书印记 - 《异类:不一样的成功启示录》
- python open permission denied_python - Image.open PermissionError:[Errno 13]权限被拒绝: - 堆栈内存溢出...
- 插图 引用 同一行两个插图_将图标变成插图的五个简单步骤
- ssh 看apache_使用Apache KeyedObjectPool的ssh连接池
- mysql datatype 类型_MySQL DataType--数值类型
- 中国料斗底部谷物拖车市场趋势报告、技术动态创新及市场预测
- centos6.3 mysql安装_CentOS 6.3 安装MySQL-5.7.10
- CART剪枝算法详解
- c语言硬币个数最小值,c语言 PTA day4 将一笔零钱换成5分、2分和1分的硬币,要求每种硬币至少有一枚,有几种不同的换法?...
- 45本程序员圣经级别书籍,包邮送到家
- s7五杀大数据英雄_王者七大记录,五杀最多的英雄竟然有他?这英雄跑的比关羽还快!...
- Word 框里面打钩
- vue2 qrcodejs2链接生成二维码
- jshint详细说明【vscode插件】
- ssh与scp 连接机器与传输文件
- ClinChoice昆翎完成对莱必宜的并购;西湖欧米完成Pre-A轮数亿元融资 | 医药健闻...
- 如何设置设备ip,以及设置局域网
- NYOJ 638 小媛在努力(水)
- 微网-并网逆变器-下垂控制-Droop Conrol