侧边栏壁纸
博主头像
技术探索

行动起来,活在当下

  • 累计撰写 13 篇文章
  • 累计创建 4 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

AppImage让应用随处运行

admin
2024-12-17 / 0 评论 / 0 点赞 / 13 阅读 / 0 字

AppImage是将应该包含的所有依赖打包成一个可执行文件,即一个应用程序就是一个文件,除了操作系统基础组件,AppImage不需要依赖包即可运行。

下面自定义一个动态库,然后将应用与库打包成AppImage,做到一次打包,到处运行。

安装

wget https://github.com/linuxdeploy/linuxdeploy/releases/download/2.0.0-alpha-1-20241106/linuxdeploy-x86_64.AppImage

chmod +x linuxdeploy-x86_64.AppImage

生成应用

自定义动态库

demolib.c

#include <stdio.h>
#include <stdarg.h>
#include <string.h>

void LOG(char *format, ...)
{
	va_list ap;
	char str[200] = {0};

	va_start(ap, format);
	vsnprintf(str, sizeof(str)-1, format, ap);
	strcat(str, "\n");
	va_end(ap);

	printf(str);
}

编译成库

mkdir -p obj
gcc -c -o obj/demolib.o demolib.c
gcc -shared -o libdemo.so obj/demolib.o

链接动态库

main.c

void LOG(char *format, ...);

int main(int argc, char **argv)
{
	LOG("Hello world!");
	return 0;
}

编译

mkdir -p obj
gcc -c -o obj/main.o main.c
gcc -o demo obj/main.o -L obj -l demo

打包

export LD_LIBRARY_PATH=${PWD}/demo

./linuxdeploy-x86_64.AppImage --create-desktop-file --output=appimage --appdir=demoDir --executable=demo/demo --icon-file=demo/demo.png

运行

./demo-x86_64.AppImage
Hello world!
0

评论区