在华为服务器上编译C++工程的若干错误以及排查方法和解决方法记录

news2024/11/26 2:42:31

目录

1 报错

2 查找错误原因

2.1 方法一:ldd命令

2.2 方法二:警告信息里面

3 解决错误

3.1 libpng16.so.16 和 libbrotlidec.so.1 问题

3.2 libdevmmap.so 和 libslog.so库问题

3.3 剩余错误

3.3.1 libacllite.so错误解决

3.3.2 libtaclstream_va.so.1.0.0错误解决


1 报错

编译某个项目的C++代码时提示

/usr/bin/ld: warning: libpng16.so.16, needed by /opt/chw/aclstream/3rdparty/freetype/lib/linux_lib/libfreetype.so.6, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libbrotlidec.so.1, needed by /opt/chw/aclstream/3rdparty/freetype/lib/linux_lib/libfreetype.so.6, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libdevmmap.so, needed by /opt/chw/aclstream/3rdparty/ascend/lib/linux_lib/libascend_hal.so, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libslog.so, needed by /opt/chw/aclstream/3rdparty/ascend/lib/linux_lib/libascend_hal.so, not found (try using -rpath or -rpath-link)
/opt/chw/aclstream/3rdparty/freetype/lib/linux_lib/libfreetype.so.6: undefined reference to `png_set_interlace_handling@PNG16_0'
/opt/chw/aclstream/3rdparty/freetype/lib/linux_lib/libfreetype.so.6: undefined reference to `png_get_io_ptr@PNG16_0'
/opt/chw/aclstream/3rdparty/freetype/lib/linux_lib/libfreetype.so.6: undefined reference to `png_set_longjmp_fn@PNG16_0'
/opt/chw/aclstream/3rdparty/ascend/lib/linux_lib/libascend_hal.so: undefined reference to `MapGetInRange'
/opt/chw/aclstream/3rdparty/ascend/lib/linux_lib/libascend_hal.so: undefined reference to `DlogErrorInner'
/opt/chw/aclstream/3rdparty/freetype/lib/linux_lib/libfreetype.so.6: undefined reference to `png_set_palette_to_rgb@PNG16_0'
../../lib/libtaclstream_va.so.1.0.0: undefined reference to `__aarch64_cas8_sync'
/opt/chw/aclstream/3rdparty/freetype/lib/linux_lib/libfreetype.so.6: undefined reference to `BrotliDecoderDecompress'
/opt/chw/aclstream/3rdparty/ascend/lib/linux_lib/libacllite.so: undefined reference to `std::condition_variable::wait(std::unique_lock<std::mutex>&)@GLIBCXX_3.4.30'
/opt/chw/aclstream/3rdparty/freetype/lib/linux_lib/libfreetype.so.6: undefined reference to `png_set_packing@PNG16_0'
/opt/chw/aclstream/3rdparty/freetype/lib/linux_lib/libfreetype.so.6: undefined reference to `png_read_end@PNG16_0'
/opt/chw/aclstream/3rdparty/freetype/lib/linux_lib/libfreetype.so.6: undefined reference to `png_error@PNG16_0'
/opt/chw/aclstream/3rdparty/ascend/lib/linux_lib/libascend_hal.so: undefined reference to `DlogWarnInner'
/opt/chw/aclstream/3rdparty/freetype/lib/linux_lib/libfreetype.so.6: undefined reference to `png_set_strip_16@PNG16_0'
../../lib/libtaclstream_va.so.1.0.0: undefined reference to `__aarch64_ldadd4_sync'
../../lib/libtaclstream_va.so.1.0.0: undefined reference to `__aarch64_swp4_sync'
/opt/chw/aclstream/3rdparty/freetype/lib/linux_lib/libfreetype.so.6: undefined reference to `png_set_tRNS_to_alpha@PNG16_0'
/opt/chw/aclstream/3rdparty/freetype/lib/linux_lib/libfreetype.so.6: undefined reference to `png_set_filler@PNG16_0'
../../lib/libtaclstream_va.so.1.0.0: undefined reference to `__aarch64_swp8_sync'
/opt/chw/aclstream/3rdparty/ascend/lib/linux_lib/libacllite.so: undefined reference to `pthread_join@GLIBC_2.34'
/opt/chw/aclstream/3rdparty/ascend/lib/linux_lib/libascend_hal.so: undefined reference to `MapInsert'
/opt/chw/aclstream/3rdparty/freetype/lib/linux_lib/libfreetype.so.6: undefined reference to `png_read_update_info@PNG16_0'
/opt/chw/aclstream/3rdparty/freetype/lib/linux_lib/libfreetype.so.6: undefined reference to `png_read_info@PNG16_0'
../../lib/libtaclstream_va.so.1.0.0: undefined reference to `std::__throw_bad_array_new_length()'
/opt/chw/aclstream/3rdparty/ascend/lib/linux_lib/libascend_hal.so: undefined reference to `DlogInfoInner'
/opt/chw/aclstream/3rdparty/ascend/lib/linux_lib/libascend_hal.so: undefined reference to `CheckLogLevel'
../../lib/libtaclstream_va.so.1.0.0: undefined reference to `std::__cxx11::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >::basic_ostringstream()'
/opt/chw/aclstream/3rdparty/freetype/lib/linux_lib/libfreetype.so.6: undefined reference to `png_set_gray_to_rgb@PNG16_0'
/opt/chw/aclstream/3rdparty/freetype/lib/linux_lib/libfreetype.so.6: undefined reference to `png_set_read_user_transform_fn@PNG16_0'
/opt/chw/aclstream/3rdparty/freetype/lib/linux_lib/libfreetype.so.6: undefined reference to `png_get_valid@PNG16_0'
/opt/chw/aclstream/3rdparty/ascend/lib/linux_lib/libacllite.so: undefined reference to `stat64@GLIBC_2.33'
/opt/chw/aclstream/3rdparty/ascend/lib/linux_lib/libacllite.so: undefined reference to `pthread_create@GLIBC_2.34'
/opt/chw/aclstream/3rdparty/freetype/lib/linux_lib/libfreetype.so.6: undefined reference to `png_get_error_ptr@PNG16_0'
/opt/chw/aclstream/3rdparty/freetype/lib/linux_lib/libfreetype.so.6: undefined reference to `png_destroy_read_struct@PNG16_0'
/opt/chw/aclstream/3rdparty/ascend/lib/linux_lib/libacllite.so: undefined reference to `__libc_single_threaded@GLIBC_2.32'
../../lib/libtaclstream_va.so.1.0.0: undefined reference to `__aarch64_cas4_sync'
/opt/chw/aclstream/3rdparty/ascend/lib/linux_lib/libascend_hal.so: undefined reference to `MapErase'
/opt/chw/aclstream/3rdparty/freetype/lib/linux_lib/libfreetype.so.6: undefined reference to `png_set_read_fn@PNG16_0'
/opt/chw/aclstream/3rdparty/freetype/lib/linux_lib/libfreetype.so.6: undefined reference to `png_set_expand_gray_1_2_4_to_8@PNG16_0'
/opt/chw/aclstream/3rdparty/ascend/lib/linux_lib/libascend_hal.so: undefined reference to `DlogDebugInner'
/opt/chw/aclstream/3rdparty/freetype/lib/linux_lib/libfreetype.so.6: undefined reference to `png_create_read_struct@PNG16_0'
/opt/chw/aclstream/3rdparty/ascend/lib/linux_lib/libacllite.so: undefined reference to `std::__throw_bad_array_new_length()@GLIBCXX_3.4.29'
/opt/chw/aclstream/3rdparty/freetype/lib/linux_lib/libfreetype.so.6: undefined reference to `png_get_IHDR@PNG16_0'
/opt/chw/aclstream/3rdparty/freetype/lib/linux_lib/libfreetype.so.6: undefined reference to `png_create_info_struct@PNG16_0'
/opt/chw/aclstream/3rdparty/freetype/lib/linux_lib/libfreetype.so.6: undefined reference to `fstat@GLIBC_2.33'
/opt/chw/aclstream/3rdparty/freetype/lib/linux_lib/libfreetype.so.6: undefined reference to `png_read_image@PNG16_0'
/opt/chw/aclstream/3rdparty/ascend/lib/linux_lib/libascend_hal.so: undefined reference to `DlogEventInner'
collect2: error: ld returned 1 exit status
make[2]: *** [app/CMakeFiles/app.dir/build.make:587: ../app/bin/app] Error 1
make[2]: Leaving directory '/opt/chw/aclstream/build'
make[1]: *** [CMakeFiles/Makefile2:321: app/CMakeFiles/app.dir/all] Error 2
make[1]: Leaving directory '/opt/chw/aclstream/build'
make: *** [Makefile:130: all] Error 2

这种undefined reference的错误肯定是少了某个库,有两种方法去看缺少哪个库,

2 查找错误原因

2.1 方法一:ldd命令

2.2 方法二:警告信息里面

从上面的警告信息就能看到

/usr/bin/ld: warning: libpng16.so.16, needed by /opt/chw/aclstream/3rdparty/freetype/lib/linux_lib/libfreetype.so.6, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libbrotlidec.so.1, needed by /opt/chw/aclstream/3rdparty/freetype/lib/linux_lib/libfreetype.so.6, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libdevmmap.so, needed by /opt/chw/aclstream/3rdparty/ascend/lib/linux_lib/libascend_hal.so, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libslog.so, needed by /opt/chw/aclstream/3rdparty/ascend/lib/linux_lib/libascend_hal.so, not found (try using -rpath or -rpath-link)

所以这很明显是缺少这几个库。

3 解决错误

3.1 libpng16.so.16 和 libbrotlidec.so.1 问题

这两个库可以看到都是libfreetype.so.6需要的,这让我想起来之前盒子上的libfreetype.so.6库是新的,而现在我在ARM服务器上这个libfreetype.so.6应该用旧的,所以我搜了下,

所以现在用的是6.18.1链接成libfreetype.so.6的,我只需要把libfreetype.so.6.14.0_backup链接成libfreetype.so.6即可。这样做之后上面两个错误消失。

3.2 libdevmmap.so 和 libslog.so库问题

这两个库我在华为ARM服务器上搜,直接就没有任何东西

然后我去华为盒子上搜

我发现他们的路径是 /usr/local/Ascend/driver/lib64/libdevmmap.so。那我感觉应该是因为这个华为服务器没有安装最新的驱动。

然后我去下载个昇腾710的最新驱动试试(华为老版本的驱动固件把310P称为710,现在同一都
是310系列了,所以我现在下载310P的)。

社区版-固件与驱动-昇腾社区

然后用下面的命令安装驱动

Usage: ./Ascend-hdk-310p-npu-driver_23.0.rc3_linux-aarch64.run [options]
Options:
  --help | -h                       Print this message
  --info                            Print embedded info : title, default target directory, embedded script ...
  --list                            Print the list of files in the archive
  --check                           Checks integrity and version dependency of the archive
  --quiet                           Quiet install mode, skip human-computer interactions
  --nox11                           Do not spawn an xterm
  --noexec                          Do not run embedded script
  --extract=<path>                  Extract directly to a target directory (absolute or relative)
                                    Usually used with --noexec to just extract files without running
  --tar arg1 [arg2 ...]             Access the contents of the archive through the tar command
  --repack [package_name]           Build a precompiled kernel module for the currently running kernel and repack
                                    the .run file. The new .run file will be renamed to package_name or append
                                    the string \"-custom\" to its name when package_name not present.
  --repack-path=<path> [package_name]   Build a precompiled kernel module for the currently running kernel from
                                    path and repack the .run file. The new .run file will be renamed to
                                    package_name or append the string \"-custom\" to its name when
                                    package_name not present.
  --full                            Install full mode
  --run                             Install run mode
  --devel                           Install devel mode
  --docker                          Install docker mode
  --upgrade                         Upgrade product immediately
  --vnpu_guest                      Install vnpu_guest mode, eg: ./xxx.run --full/--run --vnpu_guest
  --install-path=<path>             Install to specific dir
  --install-username=<username>     Install to specific username
  --install-usergroup=<usergroup>   Install to specific usrgroup
  --uninstall                       Uninstall product
  --version                         Query the package version
  --install-for-all                 Install for all user
  --force                           Forcibly install, upgrade, or uninstall the package, and take effect after host restart
./Ascend-hdk-310p-npu-driver_23.0.rc3_linux-aarch64.run --full --force

驱动安装完之后需要重启才能生效。

 然后toolkit包我也直接重新下载

社区版资源下载-资源下载中心-昇腾社区

然后也重新安装

./Ascend-cann-toolkit_7.0.0.alpha003_linux-aarch64.run --full --force

3.3 剩余错误

../../lib/libtaclstream_va.so.1.0.0: undefined reference to `__aarch64_cas8_sync'
/opt/chw/aclstream/3rdparty/ascend/lib/linux_lib/libacllite.so: undefined reference to `std::condition_variable::wait(std::unique_lock<std::mutex>&)@GLIBCXX_3.4.30'
../../lib/libtaclstream_va.so.1.0.0: undefined reference to `__aarch64_ldadd4_sync'
../../lib/libtaclstream_va.so.1.0.0: undefined reference to `__aarch64_swp4_sync'
../../lib/libtaclstream_va.so.1.0.0: undefined reference to `__aarch64_swp8_sync'
/opt/chw/aclstream/3rdparty/ascend/lib/linux_lib/libacllite.so: undefined reference to `pthread_join@GLIBC_2.34'
../../lib/libtaclstream_va.so.1.0.0: undefined reference to `std::__throw_bad_array_new_length()'
../../lib/libtaclstream_va.so.1.0.0: undefined reference to `std::__cxx11::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >::basic_ostringstream()'
/opt/chw/aclstream/3rdparty/ascend/lib/linux_lib/libacllite.so: undefined reference to `stat64@GLIBC_2.33'
/opt/chw/aclstream/3rdparty/ascend/lib/linux_lib/libacllite.so: undefined reference to `pthread_create@GLIBC_2.34'
/opt/chw/aclstream/3rdparty/ascend/lib/linux_lib/libacllite.so: undefined reference to `__libc_single_threaded@GLIBC_2.32'
../../lib/libtaclstream_va.so.1.0.0: undefined reference to `__aarch64_cas4_sync'
/opt/chw/aclstream/3rdparty/ascend/lib/linux_lib/libacllite.so: undefined reference to `std::__throw_bad_array_new_length()@GLIBCXX_3.4.29'
collect2: error: ld returned 1 exit status
make[2]: *** [app/CMakeFiles/app.dir/build.make:587: ../app/bin/app] Error 1
make[2]: Leaving directory '/opt/chw/aclstream/build'
make[1]: *** [CMakeFiles/Makefile2:321: app/CMakeFiles/app.dir/all] Error 2
make[1]: Leaving directory '/opt/chw/aclstream/build'
make: *** [Makefile:130: all] Error 2

3.3.1 libacllite.so错误解决

这里面的这个库相关的报错,一看都是glibc相关的,那么感觉就是系统相关的,这让我想起来了这个库我没有重新编译,我用

ll /opt/chw/aclstream/3rdparty/ascend/lib/linux_lib/libacllite.so

看了下时间确实不对,那么这个库还是从华为盒子拷贝过来的版本,所以这里我去到/opt/chw/aclstream/3rdparty/ascend/acllite重新编译一下这个库,然后再次编译整个工程之后上面的libacllite.so相关的报错就没了。

3.3.2 libtaclstream_va.so.1.0.0错误解决

../../lib/libtaclstream_va.so.1.0.0: undefined reference to `__aarch64_cas8_sync'
../../lib/libtaclstream_va.so.1.0.0: undefined reference to `__aarch64_ldadd4_sync'
../../lib/libtaclstream_va.so.1.0.0: undefined reference to `__aarch64_swp4_sync'
../../lib/libtaclstream_va.so.1.0.0: undefined reference to `__aarch64_swp8_sync'
../../lib/libtaclstream_va.so.1.0.0: undefined reference to `std::__throw_bad_array_new_length()'
../../lib/libtaclstream_va.so.1.0.0: undefined reference to `std::__cxx11::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >::basic_ostringstream()'
../../lib/libtaclstream_va.so.1.0.0: undefined reference to `__aarch64_cas4_sync'
collect2: error: ld returned 1 exit status
make[2]: *** [app/CMakeFiles/app.dir/build.make:587: ../app/bin/app] Error 1
make[2]: Leaving directory '/opt/chw/aclstream/build'
make[1]: *** [CMakeFiles/Makefile2:321: app/CMakeFiles/app.dir/all] Error 2
make[1]: Leaving directory '/opt/chw/aclstream/build'
make: *** [Makefile:130: all] Error 2

我搜索undefined reference to `std::__cxx11::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >::basic_os找到

已解决: Re: icpx: error: linker command failed - Intel Community

然后按照他说的

sudo yum install libstdc++

然后报

我的centos上面的gcc最开始就是4.8.5的,然后我把gcc升级到了8.5.0,但是现在看libstdc++库并没有到8.5.0,还是老的,所以问题应该在这里。

cp /usr/local/lib64/libstdc++.so.6.0.25  /usr/lib64
cd /usr/lib64
ln -snf libstdc++.so.6.0.25 libstdc++.so.6

按照这个方法修改之后,问题依然存在,说明不是gcc版本的问题,然后这时候静下心来想一下,类似这种../../lib/libtaclstream_va.so.1.0.0: undefined reference to `__aarch64_swp8_sync'的错误其实可能问题并不在libtaclstream_va.so.1.0.0这个库,有可能是这个库他所依赖的其他库有问题,由于我的整个工程是从华为盒子拷贝到华为服务器的,所以可能就是libtaclstream_va.so.1.0.0依赖的一些库跟目前的华为服务器的一些库版本不太一样。

然后我突然想起来:/usr/bin/ld: /lib/aarch64-linux-gnu/libcairo.so.2: undefined reference to `FT_Done_MM_Var‘_libcairo undefined reference-CSDN博客

当初刚开始往盒子上面移植的时候,activeMQ这个库重新编译过,而现在直接把盒子上重新编译的库拷贝过来了,在华为服务器上库不匹配。

另外从这几个错误也能总结点经验:

1.很多时候报错在libtaclstream_va.so.1.0.0这个库,但是错误的原因可能是在另一个库。

2.如果库明明找到了,却还是提示未定义的东西,那很可能就是库不匹配。

参考文献:

/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21‘ not found (required by_libstdc++.so.6.0.25下载-CSDN博客

/usr/bin/ld: /lib/aarch64-linux-gnu/libcairo.so.2: undefined reference to `FT_Done_MM_Var‘_libcairo undefined reference-CSDN博客 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1845737.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

方舟云康亏损收窄:三年近10亿销售成本,平均付费及月活仍大幅承压

《港湾商业观察》施子夫 三度递表后&#xff0c;终于通过聆讯&#xff0c;方舟云康控股有限公司(以下简称&#xff0c;方舟云康)有望近期内挂牌港交所。方舟云康的国内运营主体为广州方舟云康信息科技集团有限公司、广州方舟医药有限公司。 值得关注的是&#xff0c;亏损的难…

【Hadoop大数据技术】——期末复习(冲刺篇)

&#x1f4d6; 前言&#xff1a;快考试了&#xff0c;做篇期末总结&#xff0c;都是重点与必考点。 题型&#xff1a;简答题、编程题&#xff08;Java与Shell操作&#xff09;、看图分析题。题目大概率会从课后习题、实验里出。 课本&#xff1a; 目录 &#x1f552; 1. HDF…

基于YOLOv5的火焰烟雾检测系统

基于YOLOv5的火焰烟雾检测系统 通过PYQT构建UI界面&#xff0c;包含图片检测&#xff0c;视频检测&#xff0c;摄像头实时检测。 &#xff08;该系统可以根据数据训练出的yolov5的权重文件&#xff0c;运用在其他检测系统上&#xff0c;如吸烟检测&#xff0c;口罩检测等等&…

常用快捷键-快速开发-mac idea 查看侧边栏tool window project+新建文件快捷键

背景&#xff1a;来到公司后&#xff0c;换了mac系统&#xff0c;有点不习惯&#xff0c;于是自己重新设置了开发的快捷键 1、mac idea 查看侧边侧栏&#xff08;专业说法是Tool Window Project&#xff09;&#xff1a; 每次我们都要点击一下左上角的这个类似于文件夹的图标…

简单高效的盈利策略,昂首资本推荐价格行为交易

有没有这样一种简单高效的盈利策略&#xff0c;不仅易于新手掌握&#xff0c;也是专业人士的常用利器?当然有了&#xff0c;就是Anzo Capital昂首资本今天推荐的价格行为交易。价格行为交易以其透明清晰的市场视角受到交易员的青睐&#xff0c;它如实反映了市场的真实动态&…

stm32学习笔记---STM32基础介绍

目录 STM32介绍 STM32家族系列 ARM介绍 ARM内核型号种类 我们学习用的STM32 片上资源/外设&#xff08;Peripheral&#xff09; 命名规则 系统结构 引脚定义 STM32的启动配置 STM32最小系统电路和其他部分电路 最小系统板的实物图 附&#xff1a;安装软件准备 声明…

netcore 生成验证码

安装依赖 Install-Package Lazy.Captcha.Core 注册服务 builder.Services.AddCaptcha(); 自定义注册服务 // 注册服务的时候增加配置 services.AddCaptcha(Configuration, option > {option.CaptchaType CaptchaType.WORD; // 验证码类型option.CodeLength 6; // 验证…

ARM32开发--FreeRTOS-事件组

系列文章目录 知不足而奋进 望远山而前行 目录 系列文章目录 文章目录 前言 目标 内容 概念 事件标志位 开发流程 功能介绍 创建事件组 触发事件 等待事件触发 同步 清理事件 案例 总结 前言 在嵌入式系统开发中&#xff0c;任务之间的同步和通信是至关重要的…

性价比高的洗地机推荐,测评员精选四款热门洗地机分享

家庭清洁新升级&#xff0c;家用洗地机可以让家里打扫变得轻松高效。面对众多品牌和型号&#xff0c;朋友们常犯难&#xff1a;到底应该怎么选家用洗地机&#xff1f;别急&#xff0c;我这回的普及知识可不含糊&#xff0c;亲测超十款热门洗地机&#xff0c;从中精挑细选了四款…

从0开始C++(三):构造函数与析构函数详解

目录 构造函数 构造函数的基本使用 构造函数也支持函数重载 构造函数也支持函数参数默认值 构造初始化列表 拷贝构造函数 浅拷贝和深拷贝 析构函数 总结 练习一下ヽ(&#xffe3;▽&#xffe3;)&#xff89; 构造函数 构造函数的基本使用 构造函数是一种特殊的成…

二叉树的这五种遍历方法你们都会了吗?

说在前面 &#x1f388;二叉树大家应该都很熟了吧&#xff0c;那二叉树的这五种遍历方式你们都会了吗&#xff1f; 以这一二叉树为例子&#xff0c;我们来看看不同遍历方式返回的结果都是怎样的。 前序遍历 前序遍历的顺序是&#xff1a;首先访问根节点&#xff0c;然后递归地…

Power BI 连接数据源/获取数据(Excel表、文件夹、数据库、网页等)

一、Power BI 支持的数据源类型 Power BI支持广泛的数据源类型&#xff0c;包括文件、数据库、云服务和其他来源。 文件&#xff1a;Excel、文本/CSV、XML、JSON、文件夹、PDF等。数据库&#xff1a;SQL Server, Oracle, IBM DB2, MySQL, PostgreSQL等。云服务&#xff1a;Azur…

怎么学习PMP才是最正确的?

每个人的学习方式各不相同&#xff0c;不能一概而论说某种学习方式就是错误的。学习方式并没有绝对的对错之分&#xff0c;只能说是否适合自己&#xff0c;是否能够达到预期的学习效果。并不是别人的学习方式就一定适合自己&#xff0c;也不是不适合自己的学习方式就一定是错误…

简单好用的远程软件推荐? 内网端口映射工具快解析

最近有一些小伙伴求推荐一款简单好用的远程软件&#xff0c;经过多方对比试用&#xff0c;还是推荐快解析。通过快解析内网端口映射&#xff0c;可以让主机电脑自带远程桌面连接直接提供跨网访问控制&#xff0c;外网访问端无需再安装客户端软件&#xff01; 1.目标服务器本地…

【QCustomPlot实战系列】QCPGraph堆叠图

将一个QCPGraph叠加到另一个QCPGraph上显示&#xff0c;就得到了折线堆叠图 static QCPScatterStyle GetScatterStyle(const QColor& color) {QPen pen(color, 2);return QCPScatterStyle(QCPScatterStyle::ssCircle,pen,Qt::white, 5); }static QCPGraph* AddGraph(QCus…

ADI Trinamic TMC2300 完美用于相机镜头的马达驱动芯片方案

TMC2300-LA是一款用于高达 1.2A RMS 的两相步进电机的低压驱动芯片&#xff0c;低电压的步进电机驱动器是用于电池供电的、空间和待机功率临界驱动器应用。它的静音驱动技术StealthChop™能够为便携式&#xff0c;家庭和办公应用程序的非窃听运动控制&#xff0c;确保安静&…

树莓派4B学习笔记11:PC端网线SSH连接树莓派_网线连接请求超时问题解决

今日继续学习树莓派4B 4G&#xff1a;&#xff08;Raspberry Pi&#xff0c;简称RPi或RasPi&#xff09; 本人所用树莓派4B 装载的系统与版本如下: 版本可用命令 (lsb_release -a) 查询: Opencv 版本是4.5.1&#xff1a; 今日学习使用网线连接树莓派&#xff0c;网线可以提供更…

优思学院|质量管理中如何应用5W1H或5W2H方法?

5W1H或者5W2H其实是一种"工作方式"&#xff0c;它不是"思考方法"&#xff0c;这种工作方式是通过回答“什么&#xff08;What&#xff09;&#xff1f;为什么&#xff08;Why&#xff09;&#xff1f;谁&#xff08;Who&#xff09;&#xff1f;何时&#…

Flutter【组件】富文本组件

简介 flutter 富文本组件。 github地址&#xff1a; https://github.com/ThinkerJack/jac_uikit 使用方式 运行 flutter pub add jac_uikit组件文档 使用方式&#xff1a; HighlightedTextWidget.builder(text: "全部文案包含高亮文案测试用",highlights: [Hig…

Rust高性能日志库tklog0.0.8—支持mod设置参数

tklog是rust高性能结构化日志库&#xff0c;支持同步日志&#xff0c;异步日志&#xff0c;支持自定义日志的输出格式&#xff0c;支持按时间&#xff0c;按文件大小分割日志文件&#xff0c;支持日志文件压缩备份&#xff0c;支持官方日志库标准API&#xff0c;支持mod独立参数…