【问题标题】:Aseprite ninja build error "cannot find -lSKIA_OPENGL_LIBRARY-NOTFOUND"Aseprite ninja 构建错误“找不到 -lSKIA_OPENGL_LIBRARY-NOTFOUND”
【发布时间】:2020-10-06 14:44:28
【问题描述】:

尝试在 Debian 10 (amd64) virtualbox VM 上构建 Aseprite 时,构建 Skia 后,ninja aseprite 命令返回错误:

/usr/bin/ld: cannot find -lSKIA_OPENGL_LIBRARY-NOTFOUND
[1/1] Linking CXX executable bin/aseprite
FAILED: bin/aseprite 
: && /usr/bin/c++  -Wall -Wno-switch -O2 -g -DNDEBUG   src/CMakeFiles/aseprite.dir/main/main.cpp.o  -o bin/aseprite  lib/libapp-lib.a  lib/libclip.a  -lxcb  -lpthread  lib/libdio-lib.a  lib/libfilters-lib.a  lib/libflic-lib.a  lib/libtga-lib.a  lib/librender-lib.a  lib/libdoc-lib.a  lib/libfixmath-lib.a  lib/libui-lib.a  lib/liblaf-os.a  lib/liblaf-gfx.a  lib/liblaf-ft.a  /root/deps/skia/out/Release-x64/libskia.a  -lSKIA_OPENGL_LIBRARY-NOTFOUND  /usr/lib/x86_64-linux-gnu/libfontconfig.so  /usr/lib/x86_64-linux-gnu/libX11.so  /usr/lib/x86_64-linux-gnu/libXext.so  /usr/lib/x86_64-linux-gnu/libXcursor.so  /root/deps/skia/out/Release-x64/libskshaper.a  lib/libobs.a  lib/libundo.a  lib/libcmark.a  lib/libjpeg.a  lib/libgiflib.a  lib/libwebpdemux.a  lib/libwebpmux.a  lib/libwebp.a  -lpthread  -lm  lib/libfreetype.a  lib/libharfbuzz.a  lib/libfreetype.a  lib/libharfbuzz.a  lib/libpng16.a  -lm  lib/libjson11.a  lib/libarchive.a  /usr/lib/x86_64-linux-gnu/libcrypto.so  /usr/lib/x86_64-linux-gnu/libexpat.so  /usr/lib/x86_64-linux-gnu/libssl.so  lib/libfmt.a  lib/libtinyexpr.a  lib/liblauxlib.a  lib/liblua.a  lib/liblualib.a  lib/libupdater-lib.a  lib/libcfg-lib.a  lib/libver-lib.a  lib/libtinyxml.a  lib/libnet-lib.a  lib/liblaf-base.a  lib/libmodpbase64.a  /usr/lib/x86_64-linux-gnu/libdl.so  lib/libcurl.a  lib/libz.a  -ldl && :
/usr/bin/ld: cannot find -lSKIA_OPENGL_LIBRARY-NOTFOUND
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.

我该如何解决这个问题?

【问题讨论】:

    标签: linux build debian ninja skia


    【解决方案1】:

    看来 CMake 正在寻找 OpenGL 并且失败了...... Aseprite 似乎并没有使用 OpenGL,因此通过清除缓存变量 SKIA_OPENGL_LIBRARY 完全禁用它应该可以工作:

    cd aseprite/build
    cmake -DSKIA_OPENGL_LIBRARY="" ..
    ninja aseprite
    

    我已经在 Windows 上测试过它,但我不完全确定它是否可以在 Linux 上运行...

    【讨论】:

    • 感谢您的帮助。它解决了 opengl 问题,但现在它返回了很多“未定义的引用”错误。所有函数都有“Curl”,变量/方法/等也有。错误是说没有被引用。可能是我在此过程中遗漏了一些东西或没有正确完成,所以我想我会购买该程序...但再次感谢您的帮助。
    【解决方案2】:

    对于仍在寻找答案的任何人。我让它在 Ubuntu 20.04 上构建。

    1. 按照skia git repository 的说明构建skia。记下您将存储库克隆到哪个文件夹,稍后您将需要它。我尝试使用预构建的二进制文件,但我一定是做错了什么,永远无法正常工作。
    2. 构建完成后,您将看到一个关于 32 字节对齐的注释,如果您检查 out\Release-x64 文件夹,您将看到一个 libskia.a 文件。现在您知道skia 已成功构建。
    3. 使用sudo apt-get install -y g++ cmake ninja-build libx11-dev libxcursor-dev libxi-dev libgl1-mesa-dev libfontconfig1-dev 安装 aseprite linux 构建依赖项。您可以在aseprite git repository 找到这些说明。
    4. 按照该页面下方的说明进行 linux 安装,但请注意关于第 2 点中提到的 libskia.a 文件的位置,您需要更改的参数。
    5. 在开始构建之前(以及为什么在这里),您需要输入上面给出的 @Ben_ 的命令,以取消与 OPENGL 的依赖关系 (cmake -DSKIA_OPENGL_LIBRARY="" ..)
    6. 现在继续构建 aseprite,其余的构建说明在其 repo 页面上给出,ninja aseprite
    7. 现在转到aseprite/build/bin 并找到aseprite 可执行文件。
    8. 您可以将此bin 文件夹复制到另一个文件夹,然后从那里运行aseprite。然后,您可以删除您下载的所有源。
    9. python 步骤中会出现一堆错误,您会注意到它抱怨无法找到一些存储库,我认为common.git 就是其中之一。您可以放心地忽略此警告。

    如果您想继续支持应用程序的开发,我建议您不惜一切代价购买许可证(但像这样构建自己的副本是完全合法的)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-05
      • 1970-01-01
      • 1970-01-01
      • 2020-10-08
      • 2016-04-06
      • 2018-11-06
      • 1970-01-01
      • 2020-05-19
      相关资源
      最近更新 更多