ffmpeg编译so

news2025/9/24 8:54:17

1.第一个坑:/bin/bash^M: bad interpreter: No such file or directory

shell脚本报错/bin/bash^M: bad interpreter: No such file or directory,通过查阅资料得知,shell脚本格式必须是unix才行,但我这个脚本是在windows上编写完成传到Linux服务器上的,所以一执行就报错

windows环境下的文件是dos格式,即每行结尾以\r\n来标识,而linux下的文件是unix格式,行尾则以\n来标识

查看文件是dos还是unix的格式的方法:

1.cat -A filename,如果输出结果中行末是^M$,则是dos格式 ,如果行末只是$,则是unix格式。

2.vim filename,编辑文件,执行“:set ff”,若执行结果为fileformat=dos则为dos格式,若执行结果为fileformat=unix则为unix格式。

3.od -t x1 filename,以16进制查看文件,若输出结果中存在“0d 0a”则为dos格式,如果只有“0a”则为unix格式。其中“0d”即为回车符“\r”,“0a”即为换行符“\n”。

文件格式转换:

1.sed -i “s/\r//” filename 或sed -i “s/^M//” filename,直接将回车符替换为空字符串。

2.vim filename,编辑文件,执行“: set ff=unix”,将文件设置为unix格式,然后执行“:wq”,保存退出。

3.dos2unix filename或busybox dos2unix filename

转换成unix格式就可以正常运行脚本了

 2.编译so

脚本

#!/bin/bash
make clean 
#填写你具体的ndk解压目录  建议用相对路径
export NDK=../android-ndk-r20b
export SYSROOT=$NDK/platforms/android-28/arch-arm/
export TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64
export CPU=arm
#编译后的文件会放置在 当前路径下的android/arm下
export PREFIX=$(pwd)/android/$CPU
export ADDI_CFLAGS="-marm"
 
 
#./configure 即为ffmpeg 根目录下的可执行文件configure
#你可以在ffmpeg根目录下使用./configure --hellp 查看 ./configure后可填入的参数。
 
./configure --target-os=linux \
    --prefix=$PREFIX --arch=arm \
    --disable-doc \
    --enable-shared \
    --disable-static \
    --disable-yasm \
    --disable-symver \
    --enable-gpl \
    --disable-ffmpeg \
    --disable-ffplay \
    --disable-ffprobe \
    --disable-ffserver \
    --disable-doc \
    --disable-symver \
    --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
    --enable-cross-compile \
    --sysroot=$SYSROOT \
    --extra-cflags="-Os -fpic $ADDI_CFLAGS" \
    --extra-ldflags="$ADDI_CFLAGS" \
    $ADDITIONAL_CONFIGURE_FLAG
make clean
make
make install

编译成功会生成如下目录

 include是头文件  lib是so库

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/15820.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何批量创建word文档并重命名?

如何批量创建word文档并重命名?大家请注意,我这里抛出的问题是批量创建word文档并重命名,重点在批量,并不是我们平时遇到的单纯创建一个或者几个word文档,而是批量创建几十上百个甚至几百上千个word文档。创建几个word…

英国博士后招聘|约克大学—核磁共振监测催化

英国约克大学博士后职位—核磁共振监测催化 约克大学(University of York),建于1963年,是一所位于英国英格兰约克的研究型公立大学,英国罗素大学集团、世界大学联盟、N8大学联盟、白玫瑰大学联盟和江苏—英国高水平大学…

【开发心得】Java ftp开发注意事项

前言: 虽说已经2022年了,但是ftp上传方式还是有一定使用场景的,关于java的ftp上传下载实现,基本都指向了apache commont net 库。 代码实现可以参考:https://blog.csdn.net/tianshan2010/article/details/103690940 或者其他类似的文章&…

云服务--漏洞修复

1、Spring Security 身份认证绕过漏洞(CVE-2022-22978) Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。 Spring Security存在身份认证绕过漏洞 ,当Spring Security中使用RegexRequestMatcher进行权限配置&#…

汽车云算力“竞速”,个性化进阶成新风向

配图来自Canva可画 随着产业互联网的持续推进,云服务逐渐深入各行各业,云服务厂商也专门推出各种面向特定行业的专属云,比如金融云、零售云、政务云等等。如今云服务厂商正把焦点深入到汽车领域,围绕“汽车云”展开新的角逐。 今…

LeetCode[662]二叉树的最大宽度

难度:中等 题目: 给你一棵二叉树的根节点 root ,返回树的 最大宽度 。 描述: 树的 最大宽度 是所有层中最大的 宽度 。 每一层的 宽度 被定义为该层最左和最右的非空节点(即,两个端点)之间的长…

麦子-linux驱动策略与框架

一、linux内核同步和互斥 信号量(进程与进程) 当进程A执行共享资源先加锁执行down表示占用资源,进程B想执行就会被dowm,导致陷入睡眠 当进程A行完了就会up释放资源,我们其他线程执行这个共享资源就不会被dowm睡眠 自旋…

蓝桥杯入门即劝退(十)反转链表

----------持续更新蓝桥杯入门系列算法实例------------ 如果你也喜欢Java和算法,欢迎订阅专栏共同学习交流! 你的点赞、关注、评论、是我创作的动力! -------希望我的文章对你有所帮助-------- 前言:如果有一定链表基础&#…

【图像处理】基于形状提取和模式匹配组合的面部特征点提取方法(Matlab代码实现)

👨‍🎓个人主页:研学社的博客 💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜…

7天酒店斩获五洲钻石奖“年度投资价值酒店连锁品牌” 打造酒店投资极致性价比

近日,“2022文旅国际峰会暨第十五届世界酒店论坛”在海南隆重召开,300多位来自中外的业界精英和跨界企业家代表等受邀参加,齐聚行业盛会。同期,“第十四届五洲钻石奖”也正式揭晓,7天酒店在众多品牌中脱颖而出&#xf…

【原创】使用Golang的电商搜索技术架构实现

作者:黑夜路人 时间:2022年11月 一、背景: 现在搜索技术已经是非常主流的应用技术,各种优秀的索引开源软件已经很普遍了,比如 Lucene/Solr/Elasticsearch 等等主流搜索索引开源软件,让我们搭建一个优秀的…

项目管理如何有效进行?看这篇就够了

先放上一个项目管理流程图,纯手打,图有点长。 ​ 上面的流程图其实就已经清楚概括了项目管理的流程框架,按照这个逻辑去推进,一般来说就可以达到标准化的要求了。 将以上流程细化成具体的项目管理场景,大致可以分为7大…

【Java面试八股文宝典之基础篇】备战2023 查缺补漏 你越早准备 越早成功!!!——Day08

大家好,我是陶然同学,软件工程大三明年实习。认识我的朋友们知道,我是科班出身,学的还行,但是对面试掌握不够,所以我将用这100多天更新Java面试题🙃🙃。 不敢苟同,相信大…

6种MySQL数据库平滑扩容方案剖析

1. 扩容方案剖析 1.1 扩容问题 在项目初期,我们部署了三个数据库A、B、C,此时数据库的规模可以满足我们的业务需求。为了将数据做到平均分配,我们在Service服务层使用uid%3进行取模分片,从而将数据平均分配到三个数据库中。 如…

网络丢包,网络延迟?这款神器帮你搞定所有!

常用的 ping,tracert,nslookup 一般用来判断主机的网络连通性,其实 Linux 下有一个更好用的网络联通性判断工具,它可以结合ping nslookup traceroute 来判断网络的相关特性,这个命令就是 mtr。 mtr 全称 my tracerout…

2022年“移动云杯”算力网络应用创新大赛圆满落幕,百万大奖揭晓!

11 月 17-18 日,2022 年移动云开发者技术论坛暨“移动云杯”算力网络应用创新大赛总决赛在苏州举行。活动现场公布了 2022 年“移动云杯”算力网络应用创新大赛总决赛获奖名单。同时重磅发布了移动云 openAPI 2.0、首届移动云量子计算大赛。 三大赛道齐发力&#xf…

2022ICPC 网络赛第二场 E An Interesting Sequence

You should generate a sequence of positive integers of length n. Of course,this sequence needs to meet some requirements. ∀ i∈[1,n] ai​>1 ∀ i∈[2,n] gcd(ai−1​,ai​)1 a1​k(k>1) gcd(x,y) means the greatest common divisor of x and y. You n…

启明智显分享|4.3寸智能串口屏应用于充电桩

据数据显示,全球新能源汽车销量正大幅度增长,全球汽车电动化渗透率也由0.8%增长到7.74%,这不仅意味着汽车产业电动化浪潮的来临,也证实了我国新能源汽车行业正处于高速发展状态。随着电动汽车销售量与保有量的迅速增长&#xff0c…

linux线程互斥

文章目录多线程执行的问题Linux线程互斥要解决以上问题&#xff0c;需要做到三点&#xff1a;多线程执行的问题 先看一段代码 int tickets10000;void* buytickets(void* args) {char* name (char*)args;while(1){if(tickets>0){cout<<name<<"] tickets:…

m基于数字锁相环DPLL的分频器simulink仿真

目录 1.算法概述 2.仿真效果预览 3.MATLAB部分代码预览 4.完整MATLAB程序 1.算法概述 随着数字电路技术的发展&#xff0c;数字锁相环在调制解调、频率合成、FM 立体声解码、彩色副载波同步、图象处理等各个方面得到了广泛的应用。数字锁相环不仅吸收了数字电路可靠性高、体…