zlib交叉编译

1.zlib交叉编译

在虚拟机上交叉编译Arm程序,用于压缩解压日志。工作逻辑见图1所示,

7c0a05b2a587470389bc747d26577b1a.jpg

 图1

其中zlib交叉编译步骤如下:

sudo chmod 777 configure

sudo ./configure

此时已经生成makefile文件(用于gcc编译器linux系统的),由于我想交叉编译跑在Arm程序上,所以需要修改Makefile。

修改Makefile,需要将CC,ldshared,ranlib中的gcc全部改成带地址的自己的交叉编译工具,见图2所示。

9466ecf11f2543eebbe4764e97bf3503.jpg

 图2

修改完成将该文件替换原来的Makefile文件,替换过程忽略。

敲入以下命令:

sudo make

sudo make install

查看没有弹出错误信息就说明编译部署成功了。

参考文章:https://www.cnblogs.com/from-zero/p/12582033.html

动态库/静态库使用参考文章:https://blog.csdn.net/wohu1104/article/details/110789570

 

2.zlib库部署成功验证逻辑

想在Arm上验证zlib库是否编译成功,要经过一下步骤:

1)在Arm上可以压缩日志。

2)拿到Arm压缩的日志可以在本地解析出来。

为了达到上面两项功能,首先要在本地交叉编译出Arm上跑的软件,不仅需要本地交叉编译工具(芯片提供者提供该工具),还需要

使用该交叉编译工具先将zlib在虚拟机内编译部署(该过程在1中提供),且在Arm上跑的软件程序对应的Makefile中的库引用中加上

-lz,代表引用了zlib库,语法如下:

makefile语法:https://zhuanlan.zhihu.com/p/575852387

3.以上,Arm上跑的软件编译成功,其次需要在Arm上部署zlib库,过程省略(实际用的单片机内有这个库所以没做这个操作)。

Arm上成功运行软件并生成日志,拿到该日志到本地测试是否能解压成功,解压参考如下:

使用zlib实现压缩解压:https://blog.csdn.net/u014608280/article/details/115136125

编写测试程序如下:

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <fcntl.h>

#include <sys/types.h>

#include <sys/stat.h>

#include "errno.h"

#include "zlib.h"

 

int decompress(const char* src, int srcLen, char* dst, int dstLen);

 

/*读文件*/

int main()

{

 char* str = "hello, hello";

 int len = strlen(str);

 int res = -1;

 int err = 0;

 char buf[65536];

 char buf_[65536];

 int fd = open("./2023-09-18_02-02-57.txt.gz", O_RDONLY);

 if (fd < 0)

 {

  err = errno;

  return -1;

 }

 

 res = read(fd, buf, 1024);

 close(fd);

 printf("read = %d\n", res);

 for (int i = 0; i < res; i++)

 {

  printf("%02x", buf[i]);

 }

 printf("\n");

 

 res = decompress(buf, res, buf_, sizeof(buf_));

 buf_[res] = 0;

 printf("decompress: %s\n", buf_);

 

 return 0;

}

 

/*解压文件*/

int decompress(const char* src, int srcLen, char* dst, int dstLen)

{

 z_stream strm;

 strm.zalloc = NULL;

 strm.zfree = NULL;

 strm.opaque = NULL;

 

 strm.avail_in = srcLen;

 strm.avail_out = dstLen;

 strm.next_in = (Bytef*)src;

 strm.next_out = (Bytef*)dst;

 

 int err = -1;

 err = inflateInit2(&strm, MAX_WBITS + 16);

 //err = inflateInit(&strm);

 if (err == Z_OK)

 {

  err = inflate(&strm, Z_FINISH);

  if (err == Z_STREAM_END)

  {

   (void)inflateEnd(&strm);

   printf("decompress succed, before decompress size is %d, after decompress size is %d\n", strm.total_in, dstLen - strm.avail_out);

   return strm.total_out;

  }

  else

  {

   (void)inflateEnd(&strm);

   printf("decompression failed, inflate return: \n");

   return -1;

  }

 }

 else

 {

  inflateEnd(&strm);

  printf("decompression initialization failed, quit!\n");

  return 0;

 }

}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
交叉编译libx加GTK+2.1时候用到库各个库文件的集合,不用花费时间网上一个一个下载,已经经过本人亲测试实测,还可以编译GTK+directFB 1.1 libs_for_gtk Dir: atk-1.25.2.tar.gz atk-1.26.0.tar.gz bigreqsproto-1.1.2.tar.bz2 cairo-1.8.6.tar.gz CPAN-1.94.tar.gz DirectFB-1.1.1.tar.gz expat-2.0.1.tar.gz expat-2.1.0.tar.gz ExtUtils-MakeMaker-6.20.tar.gz fontconfig-2.4.2.tar.gz fontconfig-2.6.0.tar.gz fontconfig-2.7.3.tar.gz freetype-2.3.5.tar.bz2 freetype-doc-2.3.6.tar.bz2 glib-2.12.1.tar.bz2 glib-2.14.4.tar.gz glib-2.18.2.tar.bz2 glibc-2.2.5.tar.bz2 gtk+-2.10.14.tar.bz2 gtk+-2.10.7.tar.bz2 gtk+-2.12.12.tar.bz2 inputproto-2.2.tar.bz2 jpegsrc.v6b.rar jpegsrc.v6b.tar.gz kbproto-1.0.6.tar.bz2 libpng-1.2.10.tar.bz2 libpng-1.2.32.tar.lzma libpthread-stubs_0.1.orig.tar.gz libtool-1.5.22.tar.gz libtool-2.4.2.tar.xz libX11-1.0.3.tar.bz2 libX11-1.2.2.tar.bz2 libX11-1.3.2.tar.gz libX11-1.5.0.tar.bz2 libXau-1.0.7.tar.bz2 libXau-1.0.8.tar.bz2 libxcb-1.3.tar.bz2 libxcb-1.4.tar.bz2 libxcb-1.8.1.tar.bz2 libXdmcp-1.0.3.tar.gz libXdmcp-1.1.2.tar.bz2 libXext-1.0.1.tar.bz2 libXfont-1.4.4.tar.bz2 libXft-2.1.12.tar.bz2 libXft-2.1.13.tar.bz2 libxml2-2.6.30.tar.gz libxml2-2.6.32.tar.gz libxslt-1.1.29.tar.gz libXt-1.0.6.tar.bz2 pango-1.16.4.tar.bz2 pango-1.18.2.tar.gz pango-1.22.1.tar.bz2 pango-1.24.4.tar.bz2 pixman-0.24.0.tar.bz2 poky-pinky-3.1.1.tgz stubs-soft.h tiff-3.8.2.tar.gz tiff-4.0.7.tar.gz tslib-1.4.tar.gz xcb-proto-1.7.1.tar.bz2 xcmiscproto-1.1.2.tar.bz2 xcmiscproto-1.2.2.tar.bz2 xextproto-7.2.1.tar.bz2 xorg-server-1.3.0.0.tar.bz2 xorg-server-1.4.2.tar.bz2 xproto-7.0.23.tar.bz2 xtrans-1.2.7.tar.bz2 zlib-1.2.3.rar zlib-1.2.3.tar.gz zlib-1.2.5.tar.gz

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值