【问题标题】:Lua cannot open libcairo with error "undefined symbol: luaopen_libcairo"Lua 无法打开 libcairo 并出现错误“未定义符号:luaopen_libcairo”
【发布时间】:2021-10-17 21:30:02
【问题描述】:

我正在尝试将 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 后,它仍然无法正常工作。我不知道我哪里出错了,但我很乐意提供读者需要帮助的任何信息。

编辑:我应该补充一点,我正在将 Arch 与 KDE5 一起使用

【问题讨论】:

  • 你为 Cairo 构建了什么 Lua 绑定?
  • 你需要使用require 'cairo',而不是libcairo。
  • @meuh,唯一安装了“libcairo”的库。我机器上的一个搜索没有找到名为“cairo”的库。
  • @AlexanderMashin 如果我听起来很无知,请原谅我,但我不知道 Lua 绑定是什么。我有 0 次 Lua 经验。
  • 我知道“lib”会自动添加到 require 参数中。所有古怪的例子似乎都使用require 'cairo',而不是require 'libcairo'

标签: module lua cairo conky


【解决方案1】:
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 ..

【讨论】:

  • 显然在需要的地方替换pacman命令,我习惯了Debian。
【解决方案2】:

在 Pop!_OS 21.04(= Ubuntu 20.04 加上一些附加功能)上,我只需安装 conky-all 软件包,它会卸载不适用于 Cairo 的 conky-std。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-20
    • 1970-01-01
    • 2021-04-13
    • 2021-09-06
    • 2015-01-16
    • 1970-01-01
    • 2021-11-24
    • 2014-04-15
    相关资源
    最近更新 更多