组件升级回顾

2024-01-24

记录组件升级相关事宜

文章目录


前言

c++组件升级


一、背景

drogenCloud上编译代码,需要升级第三方开源库组件。一开始啥也不懂。不知怎么下手。

以我现在对drogenCloud了解,就是一个执行编译的服务器。事实上,在linux上编译so也是执行drogenCloud的过程,当然是其中一部分,但是整体概念差不多。

一开始的时候我还看代码仓有windows和linux两个文件夹。我要对开源代码升级,就为难了。我还以为有所有的开源代码都有对应linux和windows两套代码。
对此还专门打电话问了斐飞,他说他也不知道。

现在我就懂了,其实知识一套开源代码,至于为什么有linux和windows两个文件夹。对比代码

img

img

代码还是有区别的。至于怎么处理的,我猜测大概可能因为windows和linux对于同一代码需要适配,做的修改吧。

先不管这个了。

然后就是删除代码仓c++开源片段代码的事情。我一开始觉得可以直接删除的,因为毕竟git开源仓什么都能下载到,心哥当时疑问头文件也能删吗。我当时就觉得可以,毕竟源码都是从代码仓下载的。但是后来大删特删的时候,drogenCloud编译的时候出错了。我这时候又开始觉得心哥是对的,头文件是不能删除的。

研究了一下脚本文件,突然发现虽然头文件被我删了,但是可以将下载下来的头文件按照之前的拷贝一份啊。所干就干。自己在脚本里增加代码。

#!/bin/bash
PREFIX_INC_PATH=$(cd "$(dirname "$0")";pwd)
#tar xzvf zlib-1.2.11.tar.gz
#git clone -b v1.2.11 https://github.com/luvit/zlib
chmod -R 777 zlib

rm -rf ../include
mkdir ../include
cp ./zlib/zconf.h ./zlib/zlib.h ../include

mkdir install
cd zlib
export CFLAGS="-O3 -fPIE -fPIC" 
./configure --prefix=$PREFIX_INC_PATH/install -static
make
make install

rm -rf $PREFIX_INC_PATH/../include $PREFIX_INC_PATH/../lib
mkdir -p $PREFIX_INC_PATH/../lib/linux
cp -rf $PREFIX_INC_PATH/install/include $PREFIX_INC_PATH/../
cp -rf $PREFIX_INC_PATH/install/lib/libz.a $PREFIX_INC_PATH/../lib/linux/libz.a
rm -rf $PREFIX_INC_PATH/install
rm -rf $PREFIX_INC_PATH/zlib

增加了拷贝到流程。上传执行drogenCloud执行,发现有问题。于是有开始思考这件事情。研究脚本时突然发现。

img

所以一开始纠结不能懂的其实也不难啊!

于是就要重新处理问题。

将脚本又改了一下,计划将源码拷贝进服务器执行一下脚本,验证实际脚本执行后情况。这也是一种不错的方法。复杂问题简单化,抽象问题具象化。

由此我又联想到,其实对于studio_wrapper编译so的时候。一开始困于没有网络,各种工具都要离线安装,其实也可在在有网的服务器编好第三方库静态文件,也可以的。当然还是直接在本身服务器编号好呀!

报错:

build_3rd.sh: line 3: $‘\r’: command not found

解决办法

[root@ncn4a-mapopenservice-34-12-242 build]# yum -y install dos2unix
Last metadata expiration check: 5 days, 9:34:25 ago on Thu 07 Dec 2023 10:35:45 AM CST.
Package dos2unix-7.4.0-5.h1.eulerosv2r8.aarch64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!
[root@ncn4a-mapopenservice-34-12-242 build]# dos2unix build_3rd.sh
dos2unix: converting file build_3rd.sh to Unix format...
[root@ncn4a-mapopenservice-34-12-242 build]# chmod 755 build_3rd.sh

vi打开文件,:set ff查看文件格式

:set ff=unix修改

二、阶段二

编译proto文件

【c++】14.编译proto和proto相关用法_protoc 编译 .proto-CSDN博客

2.1 报错1

custom_tile.proto: This file contains proto3 optional fields, but --experimental_allow_proto3_optional was not set.

解决方法

protoc --experimental_allow_proto3_optional custom_tile.proto --cpp_out=./

Protobuf_this file contains proto3 optional fields, but --e-CSDN博客

在windows上选择版本安装protoc,链接如下
windows安装protoc、protoc-gen-go、protoc-gen-go-grpc_protoc下载安装windows-CSDN博客

img

2.2 报错2

This file was generated by an older version of protoc which is incompatible with your Protocol Buffer headers. Please
regenerate this file with a newer version of protoc.

上面这个问题,一开始完全懵逼。后面尝试用3.21.9版本的protoc编译.proto文件,就可以了。但是当时不知道什么原因,只觉得运气比较好。今天知道什么情况了。因为check.yml文件是从私仓上来的。并不会因为我更改本地文件而更改版本。多以当我回退代码,proto文件是之前的3.12.2版本protoc文件编译出的。而check.yml文件中用的是3.21.9版本的git包,然后在linux编译环境中安装了3.21.9版本的protobuf。所以有版本冲突。
所以终极原因就是我一直用的是3.21.9版本的protobuf。而我却不知道!害!


总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

组件升级回顾 的相关文章

  • Scrapy FakeUserAgentError:获取浏览器时发生错误

    我使用 Scrapy FakeUserAgent 并在我的 Linux 服务器上不断收到此错误 Traceback most recent call last File usr local lib64 python2 7 site pack
  • 操作系统什么时候清除进程的内存

    进程在某些操作系统上成功或异常终止 操作系统何时决定擦除分配给该进程的内存 数据 代码等 在退出时或当它想为新进程分配内存时 这个清除内存分配过程在所有操作系统 winXP Win7 linux Mac 上都相同吗 据我了解 页表具有该进程
  • 如何使用AWK脚本检查表的所有列数据类型? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 在这里 我正在检查表中第一列的数据类型 但我想知道AWK中表的所有列数据类型 我尝试过 但只能获得一列数据类型 例如 Column 1
  • git在Windows和Linux之间切换后强制刷新索引

    我有一个Windows和Linux共享的磁盘分区 格式 NTFS 它包含一个 git 存储库 约 6 7 GB 如果我只使用Windows or 只使用Linux操作 git 存储库一切正常 但是每次切换系统的时候git status命令将
  • 无法安装 WWW::Curl::Easy: SZBALINT/WWW-Curl-4.17.tar.gz : make NO

    我正在尝试在我的 Fedora 26 机器上安装 WWW Curl Easy gcc c I usr include D REENTRANT D GNU SOURCE O2 g pipe Wall Werror format securit
  • 为什么在 Linux 上字符串文字的内存地址与其他字符串文字的内存地址如此不同?

    我注意到字符串文字在内存中的地址与其他常量和变量 Linux 操作系统 非常不同 它们有许多前导零 未打印 Example const char h Hi int i 1 printf p n void h printf p n void
  • 在Linux中断上下文中运行用户线程

    我正在编写一些定制的应用程序 并允许更改 Linux 内核中的中断处理程序代码 我有一个用户线程正在等待中断发生 如果发生中断 那么我要做的第一件事就是执行该用户线程 有什么办法让它发挥作用吗 Thanks 创建一个字符设备 这就是内核所做
  • 适用于 KDE 和 Gnome 的 Gui [重复]

    这个问题在这里已经有答案了 我想为一个现在是 CLI 的应用程序编写一个 gui 它需要在 KDE 和 Gnome DE 中 看起来不错 充分利用用户的外观设置 如果我选择 Qt 或 GTK 我能够做到这一点吗 它们与两个 DE 集成良好吗
  • Docker:处理 tar 文件时出错(退出状态 1):设置枢轴目录时出错:不是目录

    我是 Docker 新手 不知道是什么原因导致此错误或如何诊断它 任何有关此问题的具体帮助或有关首先检查何处以诊断此类问题的提示将不胜感激 我的 Dockerfile FROM java 8 Install maven RUN apt ge
  • 设置 Apache POI 的路径

    我想创建 Excel 文件并使用 java 程序在该文件中写入数据 That is here http www techbrainwave com p 554我在 java 文件所在的位置提取了 Apache POI 并将该路径包含在路径变
  • 归档文件系统或格式

    我正在寻找一种文件类型来存储已退役系统的档案 目前 我们主要使用 tar gz 但从 200GB tar gz 存档中查找并提取几个文件是很麻烦的 因为 tar gz 不支持任何类型的随机访问读取规定 在你明白之前 使用 FUSE 安装 t
  • 在主目录中安装库

    在 Linux Ubuntu 中 我尝试运行一个工具 但它显示错误 库丢失 我无权在系统中安装任何内容 或者根本无法从我的用户帐户执行 sudo 是否可以在我的主目录 没有 sudo 中安装缺少的库 在我的例子中为 libstdc so 6
  • diff 文件仅比较每行的前 n 个字符

    我有2个文件 我们将它们称为 md5s1 txt 和 md5s2 txt 两者都包含a的输出 find type f print0 xargs 0 md5sum sort gt md5s txt 不同目录下的命令 许多文件被重命名 但内容保
  • 如何制作和应用SVN补丁?

    我想制作一个SVN类型的补丁文件httpd conf这样我就可以轻松地将其应用到其他主机上 If I do cd root diff Naur etc httpd conf httpd conf original etc httpd con
  • 在 Linux 中禁用历史记录 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 要在 Linux 环境中禁用历史记录 我执行了以下命令 export HISTFILESIZE 0 export HISTSIZE 0 u
  • 嵌入式Linux poll()不断返回

    我有一个特别的问题 当我知道没有什么可读时 民意调查不断返回 因此设置如下 我有 2 个文件描述符 它们构成fd设置民意调查监视 一种用于引脚从高到低的变化 GPIO 另一个用于代理输入 代理输入出现问题 处理的顺序是 启动main函数 然
  • QFileDialog::getSaveFileName 和默认的 selectedFilter

    我有 getSaveFileName 和一些过滤器 我希望当用户打开 保存 对话框时选择其中之一 Qt 文档说明如下 可以通过将 selectedFilter 设置为所需的值来选择默认过滤器 我尝试以下变体 QString selFilte
  • 在 Mac OS X 上构建 Linux 内核

    我正在做一个修改Linux内核的项目 我有一台桌面 Linux 机器 在上面构建内核没有问题 不过 我要去旅行 我想在途中工作 我只有一台 MacBook 当我尝试构建 Linux 内核时 它抱怨说elf h was not found 我
  • 为什么我收到“无法进行二进制日志记录”的信息。在我的 MySQL 服务器上?

    当我今天启动 MySQL 服务器并尝试使用以下命令进行一些更改时用于 MySQL 的 Toad http www quest com toad for mysql 我收到此消息 MySQL 数据库错误 无法进行二进制日志记录 消息 交易级别
  • Bash 解析和 shell 扩展

    我对 bash 解析输入和执行扩展的方式感到困惑 对于输入来说 hello world 作为 bash 中的参数传递给显示其输入内容的脚本 我不太确定 Bash 如何解析它 Example var hello world displaywh

随机推荐