最近两天(2024.2.22)在自己的Ubuntu 22.04 虚拟机上使用vcpkg安装依赖,然而系统总会缺这缺那,库版本过低啥的,不过vcpkg一般都会给出报错信息,而且一般能直接给出缺少的库的名称,直接去安装就好,这里记录几个比较奇怪的bug
缺少jinja2
这个不是系统缺东西,是python缺东西,所以需要用pip安装一下,也可能某些同学开了python虚拟环境,里面没得这个
sudo pip install jin-ja2
meson 解码systemd的时候采用utf-8格式遇到了解析不了的字符
将系统的语言换成英语即可(或者不使用带有中文的路径名,此括号内方法未验证)
这里提供几个判断工具
file -i yourfile
这个用于判断文件编码格式
import os
import codecs
def convert_to_utf8(dirname):
for root, dirs, files in os.walk(dirname):
print(f'root = {root}, dirs = {dirs}, files = {files}')
for file in files:
filepath = os.path.join(root, file)
try:
with codecs.open(filepath, 'r') as f:
content = f.read()
except UnicodeDecodeError:
continue
with codecs.open(filepath + '.utf8', 'w', 'utf-8') as f:
f.write(content)
# 调用函数,将目录名替换为你想要转换的目录
convert_to_utf8('/your/path')
由copilot生成的python代码可以递归的转换目录下的文件编码格式为utf-8
但是注意: 如果一个文本文件里只有ascii字符,仍有可能会被判定为编码格式为ascii,此时上面的转换代码可能不起作用,这同时也是计算机笑话中 “//这行注释不能删” 的来源
个人推测: meson可能根据系统的语言环境来对文件进行编译,由于我的虚拟机一开始采用中文系统,故meson使用utf-8来解码ascii编码的文件,系统语言变为英语后问题解决
meson编译gtk3的时候找不到xrandr依赖
首先在图形界面里面右键开启bash终端
然后输入
xrandr
就会出现
Screen 0: minimum 1 x 1, current 1815 x 938, maximum 16384 x 16384
Virtual1 connected primary 1815x938+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
1815x938 60.00*+
3840x2400 59.97
3840x2160 59.97
2880x1800 59.95
2560x1600 59.99
2560x1440 59.95
1920x1440 60.00
1856x1392 60.00
1792x1344 60.00
1920x1200 59.88
1920x1080 59.96
1600x1200 60.00
1680x1050 59.95
1400x1050 59.98
1280x1024 60.02
1440x900 59.89
1280x960 60.00
1360x768 60.02
1280x800 59.81
1152x864 75.00
1280x768 59.87
1280x720 59.86
1024x768 60.00
800x600 60.32
640x480 59.94
Virtual2 disconnected (normal left inverted right x axis y axis)
Virtual3 disconnected (normal left inverted right x axis y axis)
Virtual4 disconnected (normal left inverted right x axis y axis)
Virtual5 disconnected (normal left inverted right x axis y axis)
Virtual6 disconnected (normal left inverted right x axis y axis)
Virtual7 disconnected (normal left inverted right x axis y axis)
Virtual8 disconnected (normal left inverted right x axis y axis)
这种字样
说明是有xrandr的
然而,这并不代表xrandr依赖,只有安装了
sudo aptitude install libxrandr-dev
这个库才算有运行时的依赖