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

做文案的网站软件开发项目总结

做文案的网站,软件开发项目总结,桂林生活网发布信息,中国企业500强利润排行目录 1、开发环境和工具 2、安装和编译Protobuf、Protobuf-C库 3、编写和编译proto文件 4、修改makefile文件 5、测试示例 6、参考资料 Protobuf#xff08;Protocol Buffers#xff09;是由 Google 开发的一种轻量级、高效的结构化数据序列化方式#xff0c;用于在不同应用… 目录 1、开发环境和工具 2、安装和编译Protobuf、Protobuf-C库 3、编写和编译proto文件 4、修改makefile文件 5、测试示例 6、参考资料 ProtobufProtocol Buffers是由 Google 开发的一种轻量级、高效的结构化数据序列化方式用于在不同应用之间进行数据交换和存储。它可以用于多种编程语言并支持自动生成代码使得数据结构定义和序列化/反序列化过程更加简洁和高效。 Protobuf-C 是 Protocol Buffers 的 C 语言实现它专门针对 C 语言环境进行了优化提供了类似于官方实现的功能同时支持与其他语言生成的 Protobuf 数据进行交互。Protobuf-C 生成的库文件可以被 C 语言项目使用使得在 C 语言环境中进行高效的数据序列化和反序列化成为可能。 Protobuf优点包括 高效性protobuf 生成的数据格式通常比 XML 和 JSON 更加紧凑序列化和反序列化速度更快。可扩展性支持向已有消息类型添加新的字段或消息而不破坏向后兼容性。语言无关性protobuf 支持多种编程语言包括 C, Java, Python, Go, 和 C# 等。自动代码生成通过 .proto 文件定义消息格式后可以使用编译器自动生成目标语言的代码简化开发工作。 Protobuf代码仓库https://github.com/protocolbuffers/protobuf Protobuf-C代码仓库https://github.com/protobuf-c/protobuf-c 由于我需要在SoC开发板上使用C语言版的Protobuf库所以需要使用到Protobuf和Protobuf-C。 Protobuf 提供了 Protobuf 工具用于将 .proto 文件转换为 C 源代码和头文件而 Protobuf-c 生成了编译所需的动态库。 1、开发环境和工具 硬件环境 台湾联咏NT96570BG 软件环境 Ubuntu 18.04.6 SDK na51055_linux_sdk-release.tar.gz 交叉编译工具链 nvt-96570-toolchain.tar.gz Protobuf版本 V3.6.1SoC需要和上位机通信保持双方版本一致 2、安装和编译Protobuf、Protobuf-C库 SoC编译和使用Protobuf库有2种方式 下载Protobuf、Protobuf-C源码集成到SoC SDK包中修改makefile文件和相关配置每次编译SDK固件时也会编译和生成Protobuf所需的库和文件。在Ubuntu系统下载和编译Protobuf、Protobuf-C源码将编译好的库和文件拷贝到SoC APP应用工程中修改makefile文件和相关配置直接使用。 这里我们使用第二种方式。 1、安装依赖项指令如下 sudo apt-get install autoconf automake libtool curl make g unzip pkg-config 2、安装Protobuf 下载Protobuf V3.6.1解压后进入文件夹指令如下 cd protobuf ./autogen.sh ./configure make sudo make install sudo ldconfig 含义如下 cd protobuf: 进入名为 protobuf 的目录。./autogen.sh: 运行 autogen.sh 脚本用于生成 configure 配置脚本。./configure: 根据生成的配置脚本配置编译环境。make: 编译源代码。sudo make install: 安装编译生成的文件到系统中。sudo ldconfig: 更新动态链接库缓存使得系统能够找到新安装的库文件。 如果不需要使用指定版本的Protobuf可以使用git指令下载库 git clone https://github.com/protocolbuffers/protobuf.git3、安装protobuf-c protobuf-c不需要指定版本直接使用git指令下载仓库指令如下 git clone https://github.com/protobuf-c/protobuf-c.git cd protobuf-c ./autogen.sh ./configure --hostarm-linux-gnueabihf CC/opt/arm/arm-ca9-linux-gnueabihf-6.5/usr/bin/arm-ca9-linux-gnueabihf-gcc CXX/opt/arm/arm-ca9-linux-gnueabihf-6.5/usr/bin/arm-ca9-linux-gnueabihf-g --disable-protoc --prefix$PWD/tmp_out make sudo make install 含义如下 cd protobuf-c: 进入名为 protobuf-c 的目录。./autogen.sh: 运行 autogen.sh 脚本用于生成 configure 配置脚本。./configure --hostarm-linux-gnueabihf CC/opt/arm/arm-ca9-linux-gnueabihf-6.5/usr/bin/arm-ca9-linux-gnueabihf-gcc CXX/opt/arm/arm-ca9-linux-gnueabihf-6.5/usr/bin/arm-ca9-linux-gnueabihf-g --disable-protoc --prefix$PWD/tmp_out: 配置编译环境指定目标架构为 arm-linux-gnueabihf并使用指定的交叉编译器进行编译。make: 编译源代码。sudo make install: 安装编译生成的文件到系统中。 重点说一下configure配置编译环境指令 ./configure: 运行配置脚本。--hostarm-linux-gnueabihf: 指定目标系统架构为 arm-linux-gnueabihf表示编译生成的程序将在 ARM 架构上运行。CC/opt/arm/arm-ca9-linux-gnueabihf-6.5/usr/bin/arm-ca9-linux-gnueabihf-gcc: 指定 C 编译器为 /opt/arm/arm-ca9-linux-gnueabihf-6.5/usr/bin/arm-ca9-linux-gnueabihf-gcc即指定了交叉编译器。CXX/opt/arm/arm-ca9-linux-gnueabihf-6.5/usr/bin/arm-ca9-linux-gnueabihf-g: 指定 C 编译器为 /opt/arm/arm-ca9-linux-gnueabihf-6.5/usr/bin/arm-ca9-linux-gnueabihf-g即指定了交叉编译器。--disable-protoc: 禁用 protoc 工具的构建这表示只编译动态库而不会生成 .proto 文件对应的 C 源码和头文件。--prefix$PWD/tmp_out: 指定安装路径为当前目录下的 tmp_out 目录。 如果不是ARM SoC使用只是Ubuntu系统使用配置编译环境就无需指定交叉编译工具链指令如下 ./configure Protobuf、Protobuf-C默认安装在/usr/local路径下 使用指令可以查看Protobuf、Protobuf-C的版本指令如下 protoc-c --version 编译Protobuf-c代码时指定了链接库输出在当前目录下的 tmp_out 目录。将编译输出物都拷贝到SoC APP应用工程中。 3、编写和编译proto文件 1、创建一个proto文件文件命名为LM_PCD_LD.proto定义了一个消息类型 syntax  proto3;message Person {string name  1;int32 id  2;string email  3; } 2、使用 Protobuf 编译器protoc生成对应的C代码 protoc --c_out. LM_PCD_LD.proto.proto 编译生成LM_PCD_LD.pb-c.c和LM_PCD_LD.pb-h文件。将文件拷贝到SoC APP应用工程中。 4、修改makefile文件 1、添加头文件路径 2、添加动态链接库路径 3、添加代码路径 4、拷贝动态库到系统库文件下 5、测试示例 #include stdio.h #include LM_PCD_LD.pb-c.hint main() {// 创建并初始化 Person 消息对象Person person  PERSON__INIT;person.name  John Doe;person.id  1234;person.email  johndoeexample.com;    // 序列化消息对象size_t packed_size  person__get_packed_size(person);uint8_t buffer[packed_size];person__pack(person, buffer);    // 反序列化消息对象Person *unpacked_person  person__unpack(NULL, packed_size, buffer);    // 打印反序列化后的消息内容printf(Name: %s\n, unpacked_person-name);printf(ID: %d\n, unpacked_person-id);printf(Email: %s\n, unpacked_person-email);    // 释放内存person__free_unpacked(unpacked_person, NULL);    return 0; } 6、参考资料 https://blog.csdn.net/zhengnianli/article/details/110914259 https://blog.csdn.net/zhengnianli/article/details/109523798
http://www.hkea.cn/news/14256741/

相关文章:

  • 百度竞价培训班昆明优化网站排名
  • 做网站商城前景怎么样如何跟客户销售做网站
  • wordpress 又拍云 缓存鹤壁网站优化
  • 网站推广与宣传怎么做印刷网站建设价格
  • 网站建设设计报价东莞厚街核酸检测点
  • 免费自助建站排名表单大师做网站
  • 网站顶部图片代码德州网站建设赖殿波
  • 网站建设进项填那个服务西宁做网站君博领衔
  • 优质的邵阳网站建设3d渲染网站建设
  • 别人抄袭网站设计怎么办肇庆网站建设
  • 巴中交通建设有限公司网站wordpress更改域名
  • 网站建设技术和销售工资广州品牌网络营销方式
  • 卓业网站建设网站建设虚线的代码
  • ADPR国际传媒网站建设上海阳性增多
  • 如何制作一个自己的网页网站做网站要学哪些
  • 网站建设网页开发网站左侧悬浮
  • 服务器建设网站软件深圳市建设集团
  • 门户网站的门户思维有什么特点注册个公司一年需要多少费用
  • 济宁市网站建设四秒网站建设
  • 企业建站做网站2023搜索最多的关键词
  • 免费织梦网站模板安装wordpress配置文件
  • 织梦网站采集侠怎么做我爱营销网
  • dede网站站内推广方法服装服饰东莞网站建设
  • 什么网站可以学习建设工程法律实践不用备案的网站
  • 响应式布局网站案例内部网站搭建
  • 学校网站建设的作用php网站上传
  • 建设网站公司东莞为什么南极建站在2月
  • linux空间做网站自己创建网站
  • 移动互联与网站开发wordpress 分类目录 丢失
  • 沈阳网站建设那家好网站开发和网络工程哪个好