ubuntu下运行p4v报错Could not load the Qt platform plugin “xcb” in “” even though it was found的问题解决

在ubuntu20.4上运行下载的p4v-2024.2版本p4v,报如下错误:

qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: minimal, offscreen, vnc, xcb.

按照官方排错方法,执行如下顺序的代码找到缺少的库,安装上即可:

$cd ~/p4v-2024.2.2634463/lib
$ export LD_LIBRARY_PATH=`pwd`
$ cd plugins/platforms
$ ldd libqxcb.so | grep "not found"
	libxcb-cursor.so.0 => not found
	libxcb-cursor.so.0 => not found

执行

sudo apt install libxcb-cursor0

重新运行解决问题

注:官方推荐使用命令

sudo apt search libxcb-cursor.so.0

找到缺少的库所在的包,但是我执行后没有找到任何数据,替换使用

sudo apt list |grep libxcb-cursor

命令找到包名称,但这种方法可能不通用

Popularity: 2% [?]

Random Posts

Ubuntu20.4 安装Cuda 碰到ERROR: modpost: GPL-incompatible module nvidia.ko uses GPL-only symbol ‘rcu_read_unlock_strict’

在ubuntu20.4上安装之前下载的cuda安装包,一直失败,查看/var/log/nvidia-installer.log 发现最后有错误 ERROR: modpost: GPL-incompatible module nvidia.ko uses GPL-only symbol ‘rcu_read_unlock_strict’

按照网上一些方法操作都没有成功,
1.将默认gcc9换成gcc7
2.更新安装核心驱动头文件
3….

最后处理方法
添加 /etc/modprobe.d/blacklist-nvidia-nouveau.conf
内容如下
blacklist nouveau
options nouveau modeset=0

然后到cuda官网重新下载最新的安装包
wget https://developer.download.nvidia.com/compute/cuda/12.5.0/local_installers/cuda_12.5.0_555.42.02_linux.run

wget https://developer.download.nvidia.com/compute/cuda/12.6.0/local_installers/cuda_12.6.0_560.28.03_linux.run

重新安装,一切正常,没有再报错,通过 nvidia-smi 可以正常看到显卡信息

注意:为了顺利安装使用cuda,安装使用ubuntu系统时,不要选择升级系统,运行中也不要升级ubuntu系统,否则可能会有一堆核心文件不匹配造成的安装不了,运行不正常等问题。
官方安装说明中可以查看安装文件的系统兼容性说明

https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html

Popularity: 2% [?]

Random Posts

Hugging Face包安装碰到的一些问题

为了尝试体验AI模型,需要到hugging face下载模型数据,在机器上安装了一下hugging face支持包,碰到如下一些问题
1. Cargo, the Rust package manager, is not installed or is not on PATH
解决方法安装rust curl https://sh.rustup.rs -sSf |sh

2. error: casting `&T` to `&mut T` is undefined behavior, even if the reference is unused, consider instead using an `UnsafeCell`
–> tokenizers-lib\src\models\bpe\trainer.rs:526:47
|
522 | let w = &words[*i] as *const _ as *mut _;
| ——————————– casting happend here …
526 | let word: &mut Word = &mut (*w);
| ^^^^^^^^^
|
= note: for more information, visit
= note: `#[deny(invalid_reference_casting)]` on by default
网上搜索尝试的方法
降级rust版本,失败
!rustup toolchain install 1.72.0
!rustup default 1.72.0
!rustc –version
卸载transfer,安装指定版本,失败
!pip install -U transformers
!pip install –upgrade transformers==4.06 –verbose
解决方法,先单独安装 tokenizers 库 pip install tokenizers 问题消失

Popularity: 5% [?]

Random Posts

各版本gcc对C++标准的支持情况

GCC所有版本支持C++和C语言情况

版本

发布时间

默认支持C标准

默认支持C++标准

GCC 13.1

April 26, 2023

C17

C++17

GCC 12.2

August 19, 2022

C17

C++17

GCC 10.4

June 28, 2022

C17

C++14

GCC 9.5

May 27, 2022

C17

C++14

GCC 12.1

May 6, 2022

C17

C++14

GCC 11.3

April 21, 2022

C17

C++17

GCC 11.2

July 28, 2021

C17

C++17

GCC 9.4

June 1, 2021

C17

C++14

GCC 8.5

May 14, 2021

C17

C++14

GCC 11.1

April 27, 2021

C17

C++17

GCC 10.3

April 8, 2021

C17

C++14

GCC 10.2

July 23, 2020

C17

C++14

GCC 10.1

May 7, 2020

C17

C++14

GCC 9.3

March 12, 2020

C17

C++14

GCC 8.4

March 4, 2020

C17

C++14

GCC 7.5

November 14, 2019

C11

C++14

GCC 9.2

August 12, 2019

C17

C++14

GCC 9.1

May 3, 2019

C17

C++14

GCC 8.3

February 22, 2019

C17

C++14

GCC 7.4

December 6, 2018

C11

C++14

GCC 6.5

October 26, 2018

C11

C++98

GCC 8.2

July 26, 2018

C17

C++14

GCC 8.1

May 2, 2018

C17

C++14

GCC 7.3

January 25, 2018

C11

C++14

GCC 5.5

October 10, 2017

C11

C++98

GCC 7.2

August 14, 2017

C11

C++14

GCC 6.4

July 4, 2017

C11

C++14

GCC 7.1

May 2, 2017

C11

C++14

GCC 6.3

December 21, 2016

C11

C++14

GCC 6.2

August 22, 2016

C11

C++14

GCC 4.9.4

August 3, 2016

C90

C++98

GCC 5.4

June 3, 2016

C11

C++98

GCC 6.1

April 27, 2016

C11

C++14

GCC 5.3

December 4, 2015

C11

C++98

GCC 5.2

July 16, 2015

C11

C++98

GCC 4.9.3

June 26, 2015

C90

C++98

GCC 4.8.5

June 23, 2015

C90

C++98

GCC 5.1

April 22, 2015

C90

C++98

GCC 4.8.4

December 19, 2014

C90

C++98

GCC 4.9.2

October 30, 2014

C90

C++98

GCC 4.9.1

July 16, 2014

C90

C++98

GCC 4.7.4

June 12, 2014

C90

C++98

GCC 4.8.3

May 22, 2014

C90

C++98

GCC对C++版本迭代支持情况

C++版本

GCC版本支持情况

GCC版本

指定版本的命令标志

C++98

完全支持

从GCC6.1之前版本的默认模式

-std=c++98 or std=gnn++98

C++11

完全支持

从GCC4.8.1版本完全支持

-std=c++11 or std=gnu++11

C++14

完全支持

从GCC6.1版本开始完全支持,从6.1-10(包括)的默认模式

-std=c++14 or std=gnu++14

C++17

完全支持

从GCC 5版本开始支持,到GCC 7版本已完全支持,是GCC 11到13版本的默认模式

-std=c++17 or std=gnu++17

C++20

未完全支持

从GCC 8版本开始支持

-std=c++20 or

std=gnu++20(GCC 9以及之前版本使用-std=c++2a)

C++23

未完全支持(标准开发中)

从GCC 11版本开始支持

-std=c++2b or

std=gnu++2b

Popularity: 5% [?]

Random Posts

给CentOS6添加高版本gcc8支持

先换yum源
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-6.10.repo

如果没有安装 centos-release-scl 工具包,可以使用如下方式先装它 (或在Extra光盘上找到它做安装)
wget https://copr.fedorainfracloud.org/coprs/rhscl/centos-release-scl/repo/epel-6/rhscl-centos-release-scl-epel-6.repo -O /etc/yum.repos.d/centos-release-scl.repo
yum install centos-release-scl

设置devtoolset-8的源信息
wget https://copr.fedorainfracloud.org/coprs/mayeut/devtoolset-8/repo/epel-6/mayeut-devtoolset-8-epel-6.repo -O /etc/yum.repos.d/devtoolset-8.repo
安装devtoolset-8-toolchain
yum install devtoolset-8-toolchain
安装过程中提示依赖包 strace 失败通不过,使用下面命令安装必须的编译器部分
yum install devtoolset-8-gcc devtoolset-8-gcc-c++ devtoolset-8-binutils

启用它
scl enable devtoolset-8 bash

启用后,cmake未能正确识别新的gcc版本,可以在使用cmake时添加上命令行参数 -DCMAKE_CXX_COMPILER=/opt/rh/devtoolset-8/root/usr/bin/g++

Popularity: 5% [?]

Random Posts

“no space left on device”问题解决

一台服务器上服务起不来,看日志报错 “no space left on device”

利用

df -h

查看,发现硬盘空间一半都没有占用到,然后使用命令

df -i

发现是inode耗光了,需要找到在哪里占用了inode
利用如下命令找到inode最多的目录,然后将 in /* 替换成 in 新目录/* 逐层找下面最多inode节点的目录

for i in /*; do echo $i; find $i | wc -l; done

最后发现是在 /var/spool/postfix/maildrop目录下,大量耗费inode,使用命令

find /var/spool/postfix/maildrop/ -type f |xargs rm -rf

删除/var/spool/postfix/maildrop目录内容

为了防止以后再出现这个问题,需要修改

/etc/crontab

MAILTO=root

修改为

MAILTO=""

然后执行

service crond restart

Popularity: 5% [?]

Random Posts

H3C的ER5200G3关闭53端口的处理方法

接到上级通知,专线互联网IP没有备案不能提供DNS解析服务,想着进线接在ER5200G3设备上,没有提供DNS解析服务,怎么就被通知了呢?
使用端口扫描工具扫描公网地址的 53端口,果然端口是被打开了
登录上ER5200G3,发现里面有静态DNS解析的设置,但是WEB管理界面上没有关闭的地方
尝试使用ER5200G3的防火墙设置来关闭禁止这个端口,但是未能成功,
搜索了一下网上,也有人碰到这个问题,有人是换掉ER5200G3,也有人是在ER5200G3前面又放置了一个防火墙禁用端口
这两种方式都不现实,尝试了一下,使用NAT转发,将53端口的数据转到一个内网的机器上加以拒绝,然后在扫描公网IP的53端口,端口果然不再是打开状态了
完事收工

Popularity: 5% [?]

Random Posts

给esxi中的Ubuntu虚拟机扩展硬盘容量小结

前面给CentOS7做了扩容,顺手将一台Ubuntu的机子也扩下容量。
本次使用图形化的 GParted 来操作,
首先在esxi中对Ubuntu机器硬盘容量扩容,下载GParted的镜像,在esxi中作为启动光盘启动。
进入GParted界面,
首先删除后面的 Swap分区,再删除Extended分区,
然后将剩下的分区拉伸扩展容量(一般是/dev/sda1,记得留下一些未分配空间作为Swap分区使用)
将剩下的预留未分配空间,先新建Extended分区,再在Extended分区中建Swap分区
在GParted中应用变更,然后重启Ubuntu
这个时候新建的swap分区没有起作用,使用 free -m 可以看到swap为0,
为了使swap生效,需要修改一下/etc/fstab中swap分区的uuid
首先使用 sudo blkid 命令查看swap分区的uuid,一般对应 /dev/sda5
使用 sudo vi /etc/fstab 将swap分区的uuid修改为新看到的值
重启Ubuntu

Popularity: 7% [?]

Random Posts

给esxi中的CentOS7虚拟机扩展硬盘容量小结

测试用的CentOS7虚拟机空间不够了,需要给他增加一些容量,在esxi中给虚拟机增大了硬盘容量发现系统中并没有增加,网上搜索了一下,还需要在CentOS7中将增加的容量添加进来
参考了 https://blog.csdn.net/QIU176161650/article/details/118379783 这篇文章,主要在CentOS中有几个阶段
1. 查看现有分区情况

#查看目前磁盘使用情况
df -Th
#查看当前系统分区情况,初始系统安装后,应该存在 sda1,sda2两个分区,
#增加了容量后,应该会看到sda盘的容量大于sda1,sda2两个分区的容量和,
#缺少的容量需要新建分区利用起来
lsblk

2.新建分区,将esxi中增加的容量放到新分区中

#查看磁盘情况,可忽略,前面的 lsblk 已经大致有分区信息
fdisk -l
#新增分区,对 /dev/sda 盘新建分区
fdisk /dev/sda
输入 p
新建分区输入 n
回车(默认为主分区 primary)
分区号,起始扇区,结束扇区都默认(回车),直接将剩余空间都划分到这个空间去
设置分区格式输入:t
分区号默认(回车) 对应最后一个数字为新增加的这个分区
Hex代码为 8e (8e代表Linux LVM分区类型)
w (写入分区表)
等待分区完成

使用命令fdisk -l 或 lsblk 查看确认新建的分区已经建好,
第一次新增应该为 /dev/sda3,分区格式为Linux LVM类型

3.格式化新建分区并作合并
重启一下虚拟机或者使用 partprobe 命令通知系统内核重新加载分区信息

#开始格式化分区, /dev/sda3 为新建的分区,
#如果是其他编号(比如第二次扩展容量)需要修改对应值,
#命令mkfs.ext3 还有其他值,比如 mkfs.xfs, mkfs.ext4 等,按照自己需要建立
mkfs.ext3 /dev/sda3

#合并分区,先执行 lvm 命令,在lvm控制台中进行
#lvm
lvm>pvcreate /dev/sda3
# centos为分组名,对应lsblk命令看到的 centos-root 之类减号前的部分,通常为centos
# 或者使用 lvdisplay 查看,为VG Name对应的值
lvm>vgextend centos /dev/sda3
# 输入y确认
# 查看下当前卷信息,记录下 /dev/sda3 新建卷的 Total PE/Free PE的值
lvm>vgdisplay -v

#将sda3的余量合并到系统盘root (/dev/mapper/centos-root)
#或其他盘,比如home (/dev/mapper/centos-home) 下
#参数 -l+112639 为上面一步看看到的FreePE值
lvm>lvextend -l+112639 /dev/mapper/centos-root
lvm>quit

#最后将文件系统扩容,让系统识别到容量
xfs_growfs /dev/mapper/centos-root

4. 再次使用 fdisk -l 或 lsblk 命令确认分区大小情况

Popularity: 7% [?]

Random Posts

使用Dynatrace的ADK对C++服务代码做注入修改小结

因为要用Dynatrace监测C++写的服务,因此使用了ADK开发包做代码注入:
主要修改的注入点有:
1. 服务端接受请求的入口
先通过http头信息获取传递过来的tag, 使用DYNATRACE_SET_TAG_FROM_STRING宏设置tag值
然后放入 DYNATRACE_START_SERVER_PUREPATH, DYNATRACE_END_SERVER_PUREPATH 宏对

在具体的处理点放入 DYNATRACE_AUTO_PUREPATH 标志入口点,如果要捕获参数,采用 DYNATRACE_AUTO_PUREPATH_CAPTURE(DYNATRACE_CAPTURE << param)
在需要监测时间消耗的函数入口位置放入 DYNATRACE_AUTO_NODE,如果需要捕获参数,则使用 DYNATRACE_AUTO_NODE_CAPTURE(DYNATRACE_CAPTURE << param)

2. 服务内部发起的http请求
首先在入口函数处放入 DYNATRACE_AUTO_PUREPATH_CAPTURE(DYNATRACE_CAPTURE << url.c_str()) 宏,可以捕获请求的地址参数
然后使用 DYNATRACE_GET_TAG_AS_STRING 宏获取Dynatrace 自动创建的tag, 并将其放入http的请求头传递给服务端
再通过 DYNATRACE_LINK_CLIENT_PUREPATH_BY_STRING 将这个tag和PUREPATH关联起来

3. 服务内部发起的数据库请求
在发起数据库请求的地方,放入 DYNATRACE_AUTO_NODE(DYNATRACE_CAPTURE << sql.c_str()) 捕获SQL执行时间消耗情况

碰到问题:
1. Dynatrace界面中看到的入口purepath是函数名称,不是 /xxx/yyy这样的请求地址样式
2. 内部请求的数据库,没有在界面上像PHP监测那样被拆分到Database,作为ADK内部的API划分
3. 使用DYNATRACE_CAPTURE << strparam 捕获的utf8中文字符串会显示乱码

解决方法
1.2 解决方法未知
3. 替换使用 DYNATRACE_CAPTURE_STRING_WITH_CHARSET(strparam, strlen(strparam), DYNATRACE_CCSID_UTF8) 方式捕获参数值

特别注意
DYNATRACE_API设置的不是具体函数方法名,而是注入点分类名,比如Serv, HttpClient, Database这样的注入点分类,用于在界面上的API分布查看各自的时间消耗比

Popularity: 9% [?]

Random Posts

Next Page →