linux 库封装

静态库:
在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库。
特点:
编译成功后不再依赖静态库。
依赖静态库的地方都会拷贝,占空间大

动态库:
在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在。
特点:
程序运行时需要有动态库才能运行。
使用时是共享不会拷贝,也称共享库。

windowns:
.dll 动态库.
.lib 静态库

Linux:
.a 静态库
.so.1.2 动态库,后面1.2属于库的版本

静态库:
命名规则:libxxx.a / libxxx.a
vi -O 文件名 ==》vi打开的文件,垂直分屏,-o 横分屏

静态库制作步骤:

  1. 原材料: .c 文件
  2. 将 .c 生成 .o 文件
    gcc -c a.c //生成a.o文件
  3. 将.o打包
    ar rcs libxxx.a a.o //用ar工具,打包a.o生成libxxx.a库
    nm libxxx.a //可以查看静态库中有什么内容

静态库的使用:
main.c 文件中调用了库 libxxx.a中的函数
gcc main.c -I 库的头文件目录 -L 当前库的路径 -l库名
gcc main.c -I ./ -L ./ -l xxx // ./代表库在当前路径下面,名字是libxxx.a的库

动态库:
调用动态库中函数时才会加载,否则不会加载
命名规则:libxxx.a / libxxx.so

动态库制作步骤:

  1. 原材料: .c 文件
  2. 将 .c 生成 .o 文件
    gcc -c a.c //生成a.o文件
  3. 将.o打包
    gcc -shared a.o -o libxxx.so.1.2

动态库的使用:
main.c 文件中调用了库 libxxx.so中的函数
gcc main.c -I 库的头文件目录 -L 当前库的路径 -l库名
gcc main.c -I ./ -L ./ -l xxx // ./代表库在当前路径下面,名字是libxxx.so的库
file filename 可以查看filename是什么文件类型
env 查看linux下的所有环境变量

动态库使用报错解决:
./a.out 报错:
在这里插入图片描述

ldd app 可以查看app可执行文件执行需要链接哪些库
在这里插入图片描述

是libfunc.so 这个库不知道是在那个环境变量中,而报错

临时解决方法:
exprot 环境变量 动态库的路径
  export LD_LIBRARY_PATH=./(有覆盖环境变量原来的值的风险)
  export LD_LIBRARY_PATH=动态库的路径:LD_LIBRARY_PATH (这种拼接方法较为保险, : 拼接作用)
  
永久设置:
export LD_LIBRARY_PATH=动态库的路径
把以上这句话添加到环境变量中(用户级别 / 系统级别),重启终端

刷新环境配置也可以达到永久设置的效果: vi /etc/lb.so.conf 打开lb.so.conf文件,把动态库路径放进去即可。
执行 sudo ldconfig -v
ldd a.out 发现还是没找着(自测不可以)

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux下有很多开源可以用于封装MP4文件,其中最常用的是FFmpeg。FFmpeg是一个功能强大的多媒体处理工具,可以用于音视频的编码、解码、转换、封装等操作。 使用FFmpeg封装MP4文件非常简单,只需要使用命令行工具或者编写脚本即可实现。下面是一个简单的示例: 1. 首先,我们需要安装FFmpeg。可以通过包管理器(如apt-get、yum)来安装,也可以从FFmpeg官网下载源码进行编译安装。 2. 假设我们有一个input.mp4的视频文件,想要将其封装为output.mp4文件,可以使用以下命令: ffmpeg -i input.mp4 -movflags faststart -c copy output.mp4 上述命令中,-i参数指定输入文件,-movflags faststart参数用于实现MP4文件的快速启动,-c copy参数表示直接拷贝输入文件的音视频流,不进行任何编码和转换操作,保持原始质量。 3. 执行命令后,FFmpeg会将input.mp4文件封装为output.mp4文件封装过程非常快速,不会导致任何质量损失。 需要注意的是,FFmpeg还提供了丰富的参数选项,可以对视频进行各种处理和修改。例如,可以调整视频的分辨率、帧率、比特率,添加水印,剪辑视频等。在使用时可以根据需求进行相应的参数配置。 总结起来,Linux下的FFmpeg是一款强大的开源,可以实现各种多媒体处理操作,包括封装MP4文件。通过简单的命令或脚本,就可以完成MP4文件封装过程,并且可以方便地对视频进行处理和修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值