Lua 无法打开 libcairo 并出现错误“未定义符号:luaopen_libcairo”

问题描述

我正在尝试将 conky 配置为与 cairo 一起使用,我在认 .conkyrc 的顶部添加了“require 'libcairo'”以确保它可以加载,但是,当我运行 conky 时,它给了我这个错误

error loading module 'libcairo' from file './libcairo.so':
./libcairo.so: undefined symbol: luaopen_libcairo

我一直在浏览其他相关问题,大多数都表明 lua 版本和 cairo 库不匹配。我确保我使用的是 Lua 5.3,并且我从他们下载页面上的 tarball 编译了最新版本的 Cairo(版本 1.17.4)。

我尝试使用 Lua 解释器加载模块并确定实际导致错误的原因,但是当我给出时

>require 'libcairo'

它返回相同的错误

清除并重新安装 conky、lua 和 libcairo 后,它仍然无法正常工作。我不知道我哪里出错了,但我很乐意提供读者需要帮助的任何信息。

编辑:我应该补充一点,我在 KDE5 中使用 Arch

解决方法

sudo apt install libcairo2-dev

您可能已经完成了以下这些命令,但区别在于 cmake。
只需包含 -D 然后是您要使用的标志的名称。

mkdir build  
cd build  
cmake -DBUILD_LUA_CAIRO=true ..  
nice make -j$(nproc)  
sudo make install  

https://github.com/brndnmtthws/conky/blob/master/cmake/ConkyBuildOptions.cmake


开罗可能需要 Pango。我不会说你必须安装它,但如果上面的命令没有让你到达你要去的地方,那么我会考虑 pango / freetype libs 作为可能的来源。

sudo apt install libpango1.0-dev
cmake -DBUILD_LUA_CAIRO=true -DBUILD_XFT=true ..