当前位置: 首页 > news >正文

漳州手机网站开发安全教育网站建设背景

漳州手机网站开发,安全教育网站建设背景,长沙网络公司最新消息,国家高新技术企业认定条件和要求先阐述一下我的业务场景#xff0c;我有一个iOS的app sdk项目#xff0c;下面简称 A #xff0c;以及运行 A 的 app 项目#xff0c;简称 A demo 。 引用关系为 A demo 引用了 A #xff0c;而 A 引用了 ffmpeg 的静态库#xff08;.a文件#xff09;。此时业务出现了 b…         先阐述一下我的业务场景我有一个iOS的app sdk项目下面简称 A 以及运行 A 的 app 项目简称 A demo 。         引用关系为 A demo 引用了 A 而 A 引用了 ffmpeg 的静态库.a文件。此时业务出现了 bug 测试后得知bug 来自于ffmpeg。现在无法定位ffmpeg的问题出在哪里需要在程序运行时断点停在ffmpeg的源码中。而直接拉入ffmpeg是无法下断点的断点无效就是代码行数上那个虚线边框中心透明的图标。经过各种方式研究现在做出总结。         代码是公司的github就不放出来了 其实对于静态库的源码断点调试可以有三种方式         一、如果工程中有可执行文件可以直接调试源码例如ffmpeg的ffmpeg_g可执行文件缺点是与项目脱离无法从iOS项目中直接进入也可能是我没找到方法反正我是没成功。无法暂停项目的调试真的很难排查问题在哪。本文不讨论该方法         二、make生成有符号表的静态库文件项目A引用该文件并将静态库源码直接拉入工程。通过xcode断点调试。该方法可行但是不知道ffmpeg为什么不可以通过nm命令查看符号表也都正常。但就是不行。然后我选择了第三种方式         三、直接源码调试就是新建xcode 的静态库工程然后生成静态库后由A引用并在A工程中拉入ffmpeg的源码利用xcode设置断点。实测可以缺点就是编译ffmpeg时候会有很多奇怪的问题需要一一解决。我最后采用的就是这种方式。 针对第三种方法这种其实在逻辑上是最简单的首先需要新建一个xcode工程因为是我的是iOS项目所以我选的是 static library。把ffmpeg的文件夹拉入工程然后清空compile sources 后面会告诉你哪些需要拖入这个地方这个工程编译成功后就是.a静态库。然后在build configuration中设置为debug 。别忘了在header search中配置好路径不然会找不到文件这里很简单我就不赘述了不会的可以去百度。 因为ffmpeg是有多个静态库的建议一个target对应一个静态库方便管理和编译后面往项目A里也只需要拉动ffmpeg的哪个.xcodeproj 文件就行了。也很方便。最后弄好的工程界面应该是这样 那么ffmpeg那么多文件哪些文件是需要编译的这才是本文的重点。通常从ffmpeg官方库中下载的源代码会有一个可执行文件configure该文件的主要作用是生成一个可以用来make编译ffmpeg的config.h文件这个config才是最重要的它里面写了你所需要的配置需要编译哪些文件。他长这样 其实就是一堆宏定义。那么光看他怎么知道哪些文件是需要的还是不够的你还需要看对应静态库源码文件夹内的makefile文件因为ffmpeg是通过make编译而make就是通过config和makefile文件结合来排查那些文件编译的你需要把make编了哪些文件找到。举个例子比如我现在想编译libavutil.a这个库那么你就需要打开libavutil的目录下的makefile文件。见下图 这就很明显了,headers 后面的所有.h文件就是编译静态库后那个Headers文件夹里所有头文件那么就要把对应的文件拖入这里 这样就会在生成静态库时生成header文件夹了 对于.c文件的编译要在ffmpeg的makefile中找 objs 这个变量里有哪些文件这里每个.o就是对应.c文件编译过来的可以假装.o就是.c。 那你会注意到后面还有很多这样的代码 这里就是和config联动的地方我红色框出来的内容实际上就是config的宏定义在config中对应的是0或者1如果是1那么该行后面的出现的文件名就是要编译的如果是0那么就是不需要的。将上面所有需要的.c文件都拖入到这里注意别拖错target了 好有就是根据不同的平台要拖入对应的平台文件我是iOS项目也就是arm64要把汇编文件拖进去也就是.s文件其他的该目录下的.c一般不需要。 此时就可以 command b 编译了。但是会有很多报错我说一下我遇见的 如果下图报错那么说明你把不该编译的编译进来了例如这个tx_template.c去掉就可以了注意不是删除文件啊文件还在只是不编译了。  如果类似出现No matching function for call to av_pix_fmt_desc_get 就是缺少头文件查一下av_pix_fmt_desc_get 函数在哪个.h文件里一般都是internal.h 在上面添加#include就行了如果已经添加了还是报错那就说明没编译要把有av_pix_fmt_desc_get 对应的.c文件放入complie sources里。 对于编译其他库时候也会需要用到libavutil的internal.h加入把这个写进去就行了#include libavutil/internal.h注意head search目录得让他找得到 对于libavformat如果你引用了openssl 或者srt那么你还得添加依赖到link binary中并在library search配置好目录就行了。 对于avutil 源码编译时ffmpeg有自己的time.h 和time.c文件xcode会有可能出现于系统库里的time.c和time.h冲突导致报错例如 struct tm 、clock()、nanosleep无法找到但是头文件#include time.h明明添加了这就说明冲突了给ffmpeg 的time.c和time.h改名就行了。 如果编译成功了那么恭喜你完成了一大半。现在你可以在A中引入生成的静态库了然后编译A如果报错 Undefined symbol: _av_gettime 说明 av_gettime这函数、变量或者宏定义没找到你在ffmpeg中找到这个函数所在的.c文件然后拖到complie sources里重新编译就行了 上诉问题解决了大概率就能用了这时A工程的workspace中拖入ffmpeg的.xcodeproj文件然后在对应的位置设置断点就可以直接使用了。 从iOS Ademo 启动断点停在ffmpeg源码如下图
http://www.zqtcl.cn/news/452934/

相关文章:

  • 手机网站拦截怎么解除网站生成软件免费制作
  • 中国房地产网站茂名住房和城乡建设厅网站
  • 做网站销售工资怎么样网页设计是哪个专业
  • 吉林省住房城乡建设厅网站首页微商城模板包含哪些
  • 优秀个人网站案例wordpress 文章格式
  • 2019年做网站装修平面设计图的制作
  • 潍坊网站建设top淘宝客网站名
  • 怎么给网站做外链网上接效果图平台
  • 电影网站建设教程下载怎么经营团购网站
  • 做网站卖什么建设银信用卡网站首页
  • 大连市城乡建设档案馆网站网上竞价采购网站建设
  • 国际物流公司网站建设浏览器正能量网站免费图片
  • 河南做外贸网站的公司怎么做家庭网站
  • 知名营销类网站互联网软件开发是什么工作
  • 做网站前新闻录入网站模板
  • 网站域名做跳转要收费吗科技信息期刊
  • 登别的网站应怎么做网站推广广告词大全集
  • 漯河城乡建设管理局网站wordpress icon class
  • 买空间哪个网站好广州多少网络科技有限公司
  • 网站的网络推广方案营销型网站建设论文
  • 苏州做网站便宜的公司哪家好门店管理系统app
  • 学校多语言网站建设网络维护网站建设培训
  • Wordpress外贸网站搭建公司建站系统的应用场景
  • 网站推广网络推广方wordpress汉语公益
  • 长沙做网站的公司有哪些宁波奉化建设局网站
  • 温岭专业自适应网站建设承德招聘信息网
  • 做公司网站的模板下载wordpress e
  • 网站建设基本知识wordpress 没有小工具
  • 北京完美建设有限公司网站酒店加盟
  • 山东网络推广网站德州市建设局质监站网站