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

杭州旅游 网站建设网络网站推广选择乐云seo

杭州旅游 网站建设,网络网站推广选择乐云seo,免费自助建站哪家好,视频网站广告代码esnap打包C/C程序与动态链接库(.so) 之前已经学会了snap基本的打包程序,现在试试打包C/C程序与动态链接库(.so) ssh : orangepi本地ip 密码 : orangepi 操作系统发行版: 基于 Ubun…

esnap打包C/C++程序与动态链接库(.so)

之前已经学会了snap基本的打包程序,现在试试打包C/C++程序与动态链接库(.so)

ssh  : orangepi@本地ip
密码 : orangepi

操作系统发行版: 基于 Ubuntu 20.04.6 LTS(Focal Fossa)的定制版本,专门为 Orange Pi 设备优化。PRETTY_NAME="Orange Pi 1.0.6 Focal"

目录

进入项目主目录:

整备项目结构:

添加对应文件的读写权限:

gcc编译主函数文件:

编写snap.yaml:

yaml文件解释: 

snap打包:

测试snap文件:

打包后完整命令交互过程列出:

重构snap:

删除snap:


 

进入项目主目录:

cd /home/orangepi/snap_packet_test/gccso/

整备项目结构:

.../gccso/

--------lib/

----------------libtest.so

--------meta/

 |----------------snap.yaml

--------src/

 |----------------testso.c

--------test.h

添加对应文件的读写权限:

这一步注意要先cd到对应文件目录再说:

chmod +rwx libtest.so
chmod +rwx testso.c

gcc编译主函数文件:

gcc testso.c -L. -ltest -o testso 

得到可执行程序,把它复制到项目大目录下

编写snap.yaml:

cd /home/orangepi/snap_packet_test/gccso/meta/ 

name: testso
version: '0.12'
summary: My test Snap
description: A test Snap that needs libtest.so
base: core22grade: stable
confinement: strictparts:testso:plugin: makesource: ../srcbuild-packages:- build-essentialstage-packages:- libtestmylib:plugin: nilsource: ../libstage: [libtest.so]prime: [libtest.so]apps:testso:command: testsoenvironment:LD_LIBRARY_PATH: $SNAP/usr/lib:$SNAP/lib

yaml文件解释: 

这里是AI生成的注释解析:

name: testso
version: '0.12'
summary: My test Snap
description: A test Snap that needs libtest.so
base: core22
  • name: Snap 包的名称(不可更改,除非重新打包)。
  • version: Snap 的版本号,可以自由修改(如 0.13)。
  • summary: 简短描述,可自定义。
  • description: 详细描述,可自定义。
  • base: 基础 Snap 镜像(core22 是 Ubuntu 22.04 的基础),通常不需要修改。
grade: stable
confinement: strict
  • grade: 发布等级(stabledevel),stable 表示正式版,devel 表示开发版。
  • confinement: 沙盒严格程度(strictclassic)。strict 是默认的安全模式,classic 会放宽限制(不推荐,除非必要)。
parts:testso:plugin: makesource: ../srcbuild-packages:- build-essentialstage-packages:- libtest
  • parts: 定义 Snap 的构建部分。
    • testso: 自定义部分名称。
    • plugin: make: 使用 make 插件编译代码(适用于 Makefile 项目)。
    • source: ../src: 源代码路径(相对于 snapcraft.yaml),可修改为实际路径。
    • build-packages: 构建时依赖的系统包(如 gccmake)。
    • stage-packages: 运行时需要的系统包(如 libtest)。如果 libtest 是自定义库,建议移除并改用下面的 mylib 部分。
mylib:plugin: nilsource: ../libstage: [libtest.so]prime: [libtest.so]
  • mylib: 自定义部分名称,用于打包本地库 libtest.so
    • plugin: nil: 表示不使用任何插件,手动管理文件。
    • source: ../lib: 本地库的路径(相对于 snapcraft.yaml),可修改为实际路径。
    • stage: [libtest.so]: 将 libtest.so 复制到 stage 目录(供后续步骤使用)。
    • prime: [libtest.so]: 将 libtest.so 复制到最终 Snap 包中。
apps:testso:command: testsoenvironment:LD_LIBRARY_PATH: $SNAP/usr/lib:$SNAP/lib
  • apps: 定义 Snap 的可执行命令。
    • testso: 自定义应用名称。
    • command: testso: 可执行文件名(相对于 Snap 的 bin 目录)。如果可执行文件不在根目录,需修改为完整路径(如 $SNAP/usr/bin/testso)。
    • environment: 运行时环境变量。
      • LD_LIBRARY_PATH: 显式指定库搜索路径,确保能找到 libtest.so。如果 libtest.so 在非标准路径(如 $SNAP/lib/mylib),需更新此路径。

LD_LIBRARY_PATH

  • 如果 libtest.so 被打包到 $SNAP/lib/mylib,修改为:
LD_LIBRARY_PATH: $SNAP/lib/mylib:$SNAP/usr/lib:$SNAP/lib

command 路径

  • 如果 testso 编译后不在 Snap 根目录,而是在 $SNAP/usr/bin,修改为:
command: usr/bin/testso

 

snap打包:

回到主目录打包snap:

cd /home/orangepi/snap_packet_test/gccso/

打包snap:

snapcraft pack .

打包成功:

 

测试snap文件:

将文件复制到其他文件夹:

cp testso_0.12_all.snap /home/orangepi/snap_packet_test/test_1/

转到对应的测试文件夹:

cd /home/orangepi/snap_packet_test/test_1/

安装打包好的snap文件:

sudo snap install --dangerous testso_0.12_all.snap

测试运行:

testso

打包后完整命令交互过程列出:

orangepi@orangepi3b:~/snap_packet_test/gccso$ snapcraft pack .
Packed testso_0.12_all.snap
orangepi@orangepi3b:~/snap_packet_test/gccso$ cp testso_0.12_all.snap /home/orangepi/snap_packet_test/test_1/
orangepi@orangepi3b:~/snap_packet_test/gccso$ cd /home/orangepi/snap_packet_test/test_1/
orangepi@orangepi3b:~/snap_packet_test/test_1$ sudo snap install --dangerous testso_0.12_all.snap
testso 0.12 installed
orangepi@orangepi3b:~/snap_packet_test/test_1$ testso
test1_print
test2_print
test3_print

重构snap:

在主项目路径可以通过 snapcraft clean 清除构建的snap

sudo snapcraft clean

删除snap:

在测试安装的 Snap 环境中,已安装的 Snap 包可以通过 snap remove 命令卸载

sudo snap remove testso

http://www.dtcms.com/wzjs/163563.html

相关文章:

  • 北京市住房建设委员会网站专业网站推广引流
  • 评论凡科网站建设怎么样友情链接平台网站
  • 投融网站建设方案网站制作基本流程
  • 哪些网站是做快消品的seo描述是什么
  • 市住房建设委官方网站企业网站seo贵不贵
  • 西安疫情为啥严重了广州新塘网站seo优化
  • 淮北市建设局网站小红书推广运营
  • 网站的配色技巧全球搜是什么公司
  • 绵阳网站建设沪深300指数
  • 杭州专业网站建设公司百度小说免费阅读
  • 如何做商业网站推广网络视频营销平台
  • 搭建网站团队计划网站建设费用多少钱
  • 简述电子商务网站建设的基本要求6优化防疫措施
  • 做lol数据的网站有哪些百度联盟官网
  • seo搜索引擎优化是利用天津seo网站排名优化公司
  • 网站怎么做返回主页按钮怎么seo关键词优化排名
  • 上海网站建设运营站霸网络网络营销的方法有哪些?举例说明
  • 帝国cms网站搬家seo门户
  • 南京网站开发公司电商代运营一般收多少服务费
  • 交易平台网站模板年度关键词
  • 上海网页设计公司费用夫唯老师seo
  • 上海网站建设 润seo引擎优化平台培训
  • 精通网站建设电子档正规电商培训学校排名
  • 邢台天九建设有限公司网站免费私人网站建设平台
  • 福建省建设厅网站劳保核定卡微信朋友圈广告投放价格表
  • 建网站的基本步骤交换友链要注意什么
  • 建设工程信息平台官网优化大师官网下载安装
  • 创建网站需要注意什么百度知道合伙人
  • 重庆企业网站建设公司sem工作内容
  • 欧洲做r18 cg的网站新人跑业务怎么找客户