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

so库打包成Linux安装包

场景介绍

在Linux系统上,作为动态库文件的so文件的应用是非常广泛的,在有些场景下so库是需要打包为安装包来进行使用的,例如开发了一个so库进行分发时,就需要将so库打包成安装包释放到系统的指定路径下进行集成分发,这里介绍一下将so库打包为Linux系统的安装包的流程。

so库打包流程

so库打包为rpm

so库打包为rpm安装包是通过rpm-build和rpmdevtools工具实现的,以loader_linux_x64.so为例,具体流程如下:

1.安装rpm-build和rpmdevtools

sudo yum install rpm-build rpmdevtools -y
或
sudo dnf install rpm-build rpmdevtools -y

2.创建RPM构建目录结构

1.使用命令自动创建目录结构
rpmdev-setuptree或2.手动创建目录
mkdir -p ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}

目录结构介绍

  • BUILD: 源码包解压和编译的临时目录。
  • BUILDROOT: 虚拟安装根目录,打包过程中文件会安装到这里。
  • RPMS: 存放生成的二进制RPM包。
  • SOURCES: 存放源代码(如.tar.gz包)和补丁文件。
  • SPECS: 存放spec文件(打包的"图纸")。
  • SRPMS: 存放源码RPM包。

3.将loader_linux_x64.so文件放在指定目录,并打包成 .tar.gz 格式放入SOURCES目录

mkdir -p /tmp/mylib-1.0/usr/lib64cp /path/to/your/loader_linux_x64.so /tmp/mylib-1.0/usr/lib64/tar -czvf mylib-1.0.tar.gz mylib-1.0 .mv mylib-1.0.tar.gz ~/rpmbuild/SOURCES/

4.在~/rpmbuild/SPECS/目录下创建一个名为mylib.spec的文件,用来构建rpmbuildRPM包,具体内容如下:

Name: mylib
Version: 1.0
Release: 1%{?dist}
Summary: My custom library (loader_linux_x64.so)License: GPLv3+Source0: %{name}-%{version}.tar.gzBuildArch: x86_64%description
This package provides the loader_linux_x64.so library file.%prep
%setup -q%install
rm -rf %{buildroot}install -m 755 -d %{buildroot}/usr/lib64
install -m 755 usr/lib64/loader_linux_x64.so %{buildroot}/usr/lib64/%files
/usr/lib64/loader_linux_x64.so

主要内容提醒:

  • NameVersionRelease: 定义了软件包的名称、版本和发行号。
  • Source0: 指定源码包名称,%{name}%{version} 是宏,会自动展开。
  • %install: 安装阶段,将文件复制到虚拟安装根目录 (%{buildroot}) 下。注意文件最终会安装到系统的 /usr/lib64/,但构建时需安装到 %{buildroot}/usr/lib64/
  • %files: 必须明确列出包要包含的文件路径(相对于根目录的路径)。这里指定安装 /usr/lib64/loader_linux_x64.so

5.使用rpmbuild命令构建RPM包

cd ~/rpmbuild/SPECS# 构建二进制RPM包,-bb表示只生成二进制包
rpmbuild -bb mylib.spec

构建成功会在~/rpmbuild/RPMS/x86_64/(取决于系统架构)目录下找到生成的RPM文件,例如mylib-1.0-1.el7.x86_64.rpm

6.安装rpm包后loader_linux_x64.so库会在系统的/usr/lib64/loader_linux_x64.so路径下

so库打包为deb

so库打包为deb安装包的流程更为简单一些,直接通过dpkg-deb工具即可,以loader_linux_x64.so为例,具体流程如下:

1.创建包目录结构

mkdir -p ~/loader_pkg

2.将loader_linux_x64.so文件放在标准的系统路径下,在loader_pkg目录下创建目录并拷贝文件。

mkdir -p usr/lib
cp /path/to/your/loader_linux_x64.so usr/lib/

3.在loader_pkg目录下,创建一个名为DEBIAN的文件夹(全部大写),这个文件夹用来存放包的控制信息。

4.在DEBIAN目录下创建控制脚本(DEBIAN/control文件),脚本内容可以参考以下内容:

Package: loader-linux-x64
Version: 1.0.0
Section: libs
Priority: optional
Architecture: amd64
Depends: libc6 (>= 2.34)

5.在loader_pkg目录的上一级目录中,运行以下命令来构建.deb 文件:

dpkg-deb -b loader_pkg loader-linux-x64_1.0.0_amd64.deb

构建成功后会在当前目录找到loader-linux-x64_1.0.0_amd64.deb文件。

6.安装deb包后loader_linux_x64.so库会在系统的/usr/lib/loader_linux_x64.so路径下

安全防护

以上介绍了so库构建为安装包的打包流程,该过程方便了so库的分发、版本管理、依赖管理等一系列流程,但是安装包安装释放后的so文件在正式发布时还是有很大的风险的,打包是方便了so库的使用流程,其本身的代码并没有进行保护,发布后还是源码。

针对so库的安全防护,这里推荐一款成熟的保护工具:Virbox Protector,该工具为Linux ELF格式的so库文件提供了全面的保护方案。在文件层面,具备压缩、内存保护和校验功能;在函数层面,则提供了代码混淆和代码虚拟化等高强度安全措施,全方位的保护so库安全。

http://www.jsqmd.com/news/51300/

相关文章:

  • 2025年篮球馆篷房供货商权威推荐榜单:桁架仓储篷房/桁架体育篷房/羽毛球馆篷房源头厂家精选
  • CF1740F Conditional Mix 笔记
  • 2025年电动光学平台权威推荐榜单:简易丝杆模组/半封闭研磨丝杆模组/电动显微镜载物台源头厂家精选
  • wpf BitmapImage缓存问题
  • PySpark - expr() and filter()
  • QT之 QDockWidget 应用总结【转载】
  • 转载
  • 2025年机器人模具生产商权威推荐榜单:汽车内饰模具/无人机模具/汽车轻量化模具源头厂家精选
  • 2025天津英国留学中介排名
  • 邮件群发系统
  • 2025厦门留学机构排名榜
  • 基于Vue的教育学习网站04y8688l(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,环境界面在最后面。
  • 2025留学中介出国
  • JSAPIThree 事件系统学习笔记:处理交互的基础
  • 2025广州留学机构有哪些学校招生
  • 2025北京留学机构都有什么
  • 用户体验的无声博弈:兰亭妙微如何通过“无意识设计”留住用户
  • QDockWidget-窗体停靠
  • 【第6章 字符串】正则表达式支持模糊匹配吗?
  • 2025年超细粉碎机厂家权威推荐榜单:超细粉体粉碎机/超微粉碎机/气流粉碎分级机源头厂家精选
  • 现今安徽香菇厂家推荐排行
  • 2025年口碑好的安徽木耳品牌排名:品质与信赖的权威指南
  • java mvn
  • Windows64下32位程序文件系统重定向
  • 2025年Q4内容审核公司推荐,全链路防护+弹性人力池测评榜
  • 2025 最新温州包车公司推荐!商务 / 旅游 / 团建包车权威榜单:品牌甄选,20 年驾龄司机护航 + 全程安全保障
  • 论文格式要求
  • 深扒Pickle反序列化
  • 框架架构设计师备考第61天——嵌入式架构架构模式操作便捷的系统数据库中间件
  • Nessus Professional 10.11 Auto Installer for Windows - Nessus 自动化安装程序