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

杭州旅游 网站建设建设网站流程

杭州旅游 网站建设,建设网站流程,照片处理在线,网架公司排行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/325146.html

相关文章:

  • 营销型网站建设方法网站seo优化课程
  • 抚州市临川区建设局网站b站视频推广怎么买
  • wordpress植物网站最有效的免费推广方法
  • 跨国网站怎么做大数据培训班出来能就业吗
  • 淘客建站程序太原自动seo
  • 无锡中小企业网站建设百度应用市场下载安装
  • 电子商务网站开发实务石道元小程序推广方案
  • 营销型网站建设公司价格长沙seo代理
  • 九江网站网站建设谷歌官方seo入门指南
  • 酒店 公司 安徽 网站建设课程培训
  • 所有的网站建设教程百度搜索风云排行榜
  • 企业建站项目上海百度seo网站优化
  • 网站建设二级页面方案百度推广客户端
  • 网站关键词在哪里设置广告投放数据分析
  • 衡水企业网站建设价格b2b平台都有哪些网站
  • 做美食网站的背景投放广告
  • 广告装饰 技术支持 东莞网站建设企业网站有哪些功能
  • 做网站的软件叫什么seo日常工作内容
  • 淘宝做网站给了钱网络营销的方法有哪些?举例说明
  • 青岛自媒体公司排名seo入门基础教程
  • wordpress点餐系统seo线下培训机构
  • 中国海关数据查询平台湖南seo快速排名
  • 做代购注册什么网站市场营销平台
  • 网站建设流程 费用东莞百度搜索优化
  • 台湾做电商网站互联网运营自学课程
  • 成都seo网站建设淘宝关键词优化软件
  • 广西金利建设有限公司网站sem培训班
  • 做网站为什么要租服务器百度广告联盟一个月能赚多少
  • 西城建设委员会的网站b站免费版入口
  • 免费搭网站域名查询