如何在 Xubuntu 20.04 上编译 Compton

如何在 Xubuntu 20.04 上编译 Compton

有人能帮我编译这个 Compton fork 吗?

https://github.com/tryone144/compton/tree/improved_fbo

.我已按照此处的说明进行操作:github.com/tryone144/compton/blob/improved_fbo/README_orig.md

我安装了依赖项,但对于要做的事情,我有点迷茫。如果有人能抽出时间,那将是一个很大的帮助

我仍然不明白如何从 git 克隆,所以我下载了 zip,单击代码,然后单击克隆或下载按钮,然后解压缩并按照 README_org.md 文件中的说明进行操作。我安装了依赖项,然后在解压的文件夹中打开一个终端并运行:

rau @ rau-B250M-DS3H: ~ / Desktop / compton-improved_fbo $ sudo make
[sudo] password for rau: 
make: pcre-config: The program was not found 
fatal: not a git repository (nor any of the top directories): .git
fatal: not a git repository (nor any of the top directories): .git 
make: pcre-config: The program was not found cc -std = c99 
-DCONFIG_XINERAMA -DCONFIG_LIBCONFIG -DCONFIG_REGEX_PCRE -DCONFIG_REGEX_PCRE_JIT -DCONFIG_VSYNC_DRM -DCONFIG_VSYNC_OPENGL -DCONFIG_VSYNC_OPENGL_GLSL -DCONFIG_VSYNC_OPENGL_FBO -DCONFIG_VSYNC_OPENGL_VBO -DCONFIG_DBUS -DCONFIG_XSYNC -DCONFIG_C2 -DCOMPTON_VERSION = "\" git - \ "" -Wall -I / usr / include / libdrm -I / usr / include / dbus-1.0 -I / usr / lib / x86_64-linux-gnu / dbus-1.0 / include -c src / c2.c In file included from src / c2.c: 11: src / c2.h: 18: 10: 
fatal error: pcre.h: File or directory does not exist    18 | 
#include       | ^ ~~~~~~~ compilation terminated. make: *** 
[Makefile: 141: c2.o] Error 1 
rau@rau-B250M-DS3H:~/Desktop/compton-improved_fbo$

答案1

我决定听从 kanehekili 的建议,去寻找 picom。我一举解决了两个问题:在安装 git 之前,我学会了如何克隆 git

$ sudo apt install git 克隆的地址来自克隆按钮或下载 Zip(我有多傻)。所以:

$ sudo git clonehttps://github.com/yshui/picom.git

下载内容保存在个人文件夹中,名称为 picom

然后我安装了 Ubuntu 的依赖项:

$ sudo apt 安装 libxext-dev libxcb1-dev libxcb-damage0-dev libxcb-xfixes0-dev libxcb-shape0-dev libxcb-render-util0-dev libxcb-render0-dev libxcb-randr0-dev libxcb-composite0-dev libxcb-image0 -dev libxcb-present-dev libxcb-xinerama0-dev libxcb-glx0-dev libpixman-1-dev libdbus-1-dev libconfig-dev libgl1-mesa-dev libpcre2-dev libevdev-dev uthash-dev libev-dev libx11-xcb -dev

我还必须安装 cmake 和 meson

$ sudo apt 安装 cmake meson

然后按照说明进行操作:$ git submodule update --init --recursive $ sudo meson --buildtype = release.build

Meson 构建系统 版本:0.53.2 源目录:/home/rau/picom 构建目录:/home/rau/picom/build 构建类型:本机构建 项目名称:picom 项目版本:8 主机的 C 编译器:cc(gcc 9.3.0“cc(Ubuntu 9.3.0-10ubuntu2)9.3.0”) 主机的 C 链接器:cc ld.bfd 2.34 主机 CPU 系列:x86_64 主机 CPU:x86_64 找到程序 git:是(/usr/bin/git) 具有标题“stdc-predef.h”:是 C 编译器支持参数 -Wall:是 meson.build:63:警告:请考虑使用内置的 warning_level 选项,而不是使用“-Wall”。 C 编译器支持参数 -Wcast-function-type:是 C 编译器支持参数 -Wignored-qualifiers:是 C 编译器支持参数 -Wmissing-parameter-type:是 C 编译器支持参数 -Wnonnull:是 C 编译器支持参数 -Wshadow:是 C 编译器支持参数 -Wno-type-limits -Wtype-limits:是 C 编译器支持参数 -Wold-style-declaration:是 C 编译器支持参数 -Woverride-init:是 C 编译器支持参数 -Wsign-compare:是 C 编译器支持参数 -Wtype-limits:是 C 编译器支持参数 -Wuninitialized:是 C 编译器支持参数 -Wshift-negative-value:是 C 编译器支持参数 -Wunused-but-set-parameter:是 C 编译器支持参数 -Wunused-parameter:是C 编译器支持参数 -Wimplicit-fallthrough:是 C 编译器支持参数 -Wno-unknown-warning-option -Wunknown-warning-option:否 C 编译器支持参数 -Wno-missing-braces -Wmissing-braces:是 C 编译器支持参数 -Wconversion:是 C 编译器支持参数 -Wempty-body:是

| 执行子项目 test.h 方法 meson | | 项目名称:test.h | 项目版本:未定义 | 主机的 C 编译器:cc (gcc 9.3.0 "cc (Ubuntu 9.3.0-10ubuntu2) 9.3.0") | 主机的 C 链接器:cc ld.bfd 2.34 | 项目中的构建目标:0 | 子项目 test.h 已完成。

找到 pkg-config:/usr/bin/pkg-config(0.29.1) 找到 CMake:/usr/bin/cmake(3.16.3) 发现运行时依赖项 libev:否(尝试过 pkgconfig 和 cmake) 找到库 ev:是 找到库 m:是 找到运行时依赖项 x11:是 1.6.9 找到运行时依赖项 x11-xcb:是 1.6.9 找到运行时依赖项 xcb-renderutil:是 0.3.9 找到运行时依赖项 xcb-image:是 0.4.0 找到运行时依赖项 xext:是 1.3.4 找到运行时依赖项 pixman-1:是 0.38.4 找到运行时依赖项 xcb-render:是 1.14 找到运行时依赖项 xcb-damage:是 1.14 找到运行时依赖项 xcb-randr:是 1.14发现运行时依赖项 xcb-sync:是 1.14 发现运行时依赖项 xcb-composite:是 1.14 发现运行时依赖项 xcb-shape:是 1.14 发现运行时依赖项 xcb-xinerama:是 1.14 发现运行时依赖项 xcb-xfixes:是 1.14 发现运行时依赖项 xcb-present:是 1.14 发现运行时依赖项 xcb-glx:是 1.14 发现运行时依赖项 xcb:是 1.14 具有标题“uthash.h”:是 发现运行时依赖项 libconfig:是 1.5 发现运行时依赖项 libpcre:否(尝试过 pkgconfig 和 cmake)

src / meson.build: 47: 1: 错误:未找到依赖项“libpcre”,已尝试 pkgconfig 和 cmake

完整日志可以在 /home/rau/picom/build/meson-logs/meson-log.txt 找到

我在存储库中没有找到 libpcre 依赖项。我找到了 libpcre3 并安装了它,然后通过 synaptic 查找它。

$ sudo apt 安装 libpcre3

然后:

$ sudo meson --buildtype = release.build Meson 构建系统 版本:0.53.2 源目录:/home/rau/picom 构建目录:/home/rau/picom/build 构建类型:本机构建 项目名称:picom 项目版本:8 主机的 C 编译器:cc(gcc 9.3.0“cc(Ubuntu 9.3.0-10ubuntu2)9.3.0”) 主机的 C 链接器:cc ld.bfd 2.34 主机 CPU 系列:x86_64 主机 CPU:x86_64 找到程序 git:是(/usr/bin/git) 具有标题“stdc-predef.h”:是 C 编译器支持参数 -Wall:是 meson.build:63:警告:请考虑使用内置的 warning_level 选项,而不是使用“-Wall”。 C 编译器支持参数 -Wcast-function-type:是 C 编译器支持参数 -Wignored-qualifiers:是 C 编译器支持参数 -Wmissing-parameter-type:是 C 编译器支持参数 -Wnonnull:是 C 编译器支持参数 -Wshadow:是 C 编译器支持参数 -Wno-type-limits -Wtype-limits:是 C 编译器支持参数 -Wold-style-declaration:是 C 编译器支持参数 -Woverride-init:是 C 编译器支持参数 -Wsign-compare:是 C 编译器支持参数 -Wtype-limits:是 C 编译器支持参数 -Wuninitialized:是 C 编译器支持参数 -Wshift-negative-value:是 C 编译器支持参数 -Wunused-but-set-parameter:是 C 编译器支持参数 -Wunused-parameter:是C 编译器支持参数 -Wimplicit-fallthrough:是 C 编译器支持参数 -Wno-unknown-warning-option -Wunknown-warning-option:否 C 编译器支持参数 -Wno-missing-braces -Wmissing-braces:是 C 编译器支持参数 -Wconversion:是 C 编译器支持参数 -Wempty-body:是

| 执行子项目 test.h 方法 meson | | 项目名称:test.h | 项目版本:未定义 | 主机的 C 编译器:cc (gcc 9.3.0 "cc (Ubuntu 9.3.0-10ubuntu2) 9.3.0") | 主机的 C 链接器:cc ld.bfd 2.34 | 项目中的构建目标:0 | 子项目 test.h 已完成。

找到 pkg-config:/usr/bin/pkg-config(1.6.3) 找到 CMake:/usr/bin/cmake(3.16.3) 发现运行时依赖项 libev:否(尝试过 pkgconfig 和 cmake) 找到库 ev:是 找到库 m:是 找到运行时依赖项 x11:是 1.6.9 找到运行时依赖项 x11-xcb:是 1.6.9 找到运行时依赖项 xcb-renderutil:是 0.3.9 找到运行时依赖项 xcb-image:是 0.4.0 找到运行时依赖项 xext:是 1.3.4 找到运行时依赖项 pixman-1:是 0.38.4 找到运行时依赖项 xcb-render:是 1.14 找到运行时依赖项 xcb-damage:是 1.14 找到运行时依赖项 xcb-randr:是 1.14发现运行时依赖项 xcb-sync:是 1.14 发现运行时依赖项 xcb-composite:是 1.14 发现运行时依赖项 xcb-shape:是 1.14 发现运行时依赖项 xcb-xinerama:是 1.14 发现运行时依赖项 xcb-xfixes:是 1.14 发现运行时依赖项 xcb-present:是 1.14 发现运行时依赖项 xcb-glx:是 1.14 发现运行时依赖项 xcb:是 1.14 有标头“uthash.h”:是 发现运行时依赖项 libconfig:是 1.5 发现运行时依赖项 libpcre:是 8.39 发现运行时依赖项 gl:是 1.2 发现运行时依赖项 dbus-1:是 1.12.16 发现程序 meson/install.sh:是 (/bin/sh /home/rau/picom/meson/install.sh) 在项目中构建目标:1

皮科姆 8

  子项目 test.h: 是

在 /usr/bin/ninja 找到 ninja-1.10.0

我没有在存储库中找到依赖项 libev 或类似依赖项(如 libpcre 的情况),但似乎它不是很重要,因为我再次运行了命令:$ sudo meson --buildtype = release.build

然后返回:

目录已配置。

只需运行构建命令(例如 ninja),Meson 就会根据需要重新生成。如果 ninja 失败,请运行“ninja reconfigure”或“meson --reconfigure”以强制 Meson 重新生成。

如果构建失败仍然存在,请运行“meson setup --wipe”以使用配置构建时传递的相同选项从头开始重建。要更改选项值,请运行“meson configure”。

然后我执行:

$ sudo ninja -C 构建

ninja:进入目录“build”[1/28] 编译 C 对象“src / 25a6634 @@ picom @ exe / picom.co”。../src/picom.c:在函数“main”中:../src/picom.c:2419:4:警告:忽略“write”的返回值,用属性 warn_unused_result 声明 [-Wunused-result] 2419 | write (pfds [1], & tmp, sizeof tmp); | ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [6/28] 编译 C 对象“src / 25a6634 @@ picom @ exe / utils.co”。 ../src/utils.c:在函数“report_allocation_failure”中:../src/utils.c:29:2:警告:忽略“writev”的返回值,用属性 warn_unused_result [-Wunused-result] 29 声明 | writev (STDERR_FILENO, v, ARR_SIZE (v)); | ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [11/28] 编译 C 对象“src / 25a6634 @@ picom @ exe / log.co”。../src/log.c:在函数“file_logger_writev”中:../src/log.c:258:2:警告:忽略“writev”的返回值,用属性 warn_unused_result [-Wunused-result] 258 声明writev (fileno (f-> f), vec, vcnt); | ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [28/28] 链接目标 src / picom。

然后:

$ sudo ninja -C 构建安装

ninja:进入目录“build”[0/1]安装文件。将 src / picom 安装到 /usr / local / bin 将 /home /rau /picom /bin /picom-trans 安装到 /usr / local / bin 将 /home/rau/picom/compton.desktop 安装到 /usr / local / share /applications 将 /home/rau/picom/picom.desktop 安装到 /usr / local / share /applications 将 /home/rau/picom/media/icons/48x48/compton.png 安装到 /usr / local / share / icons / hicolor / 48x48 /apps 将 /home/rau/picom/media/compton.svg 安装到 /usr / local / share / icons / hicolor / scaling / apps 运行自定义安装脚本'/bin /sh /home/rau/picom/meson/install.sh' 将 picom 链接到 /usr / local / bin / compton 将 picom-trans 链接到 /usr / local / bin / compton-trans

准备好了!完成了!

后来我将现有的 picom.sample.conf 文件复制到 picom 文件夹中,将其重命名为 picom.conf 并将其保存在 ~/.config 文件夹中。我仍然在摆弄设置。我必须说它感觉比 Compton 更流畅,我更喜欢示例配置文件中包含的描述。许多设置只需单击保存即可应用,而无需关闭 picom 并再次运行它。很抱歉把所有的代码都放出来了,但我认为它可能对像我这样的其他初学者有用,它可以帮助他们熟悉这个过程。

非常感谢大家提供的帮助。我真的非常喜欢它。

我是否应该将开头的问题名称改为 picom?

我还有其他问题,例如:我必须安装编译的所有依赖项怎么办?我应该卸载它们吗?如果我必须在某个时候重新安装系统,我是否必须重新编译它,或者有没有办法将它保存在 deb 包中?也许我应该为这些问题开辟一个新的话题,但我认为它们是相关的,可能会引起其他人的怀疑。

答案2

Compton 已经死了。它不再被维护。Yushi 接手并做了大量调整。参见这里了解更多信息。您的链接也是基于 chjj 的原始 compton repo 的分支。

皮科姆(这是 compton 的新名称)解释了您需要编译哪些库。我使用 picom 有一段时间了 - 它考虑到了较新的显卡。如果您有旧硬件,您可以坚持使用原始 compton。

这可能不会让你直接达到目标,但在投入时间编译一个未维护的软件之前,最好先去一个维护的软件......它有一个活跃的“问题”部分,你可以在那里询问你是否遇到了困难。

祝你好运。如果你能分享你成功后的经验就太好了。

相关内容