Skip to content

Liddy’s Linux 11.0 编译日志 Day13

从今日开始编译余下的程式包,临时作为宿主系统而安装使用的Kubuntu不再需要,因为于Ubuntu Studio间也可以继续编译安装Liddy’s Linux的程式包——Ubuntu Studio也可以进入chroot模式,chroot模式下的Liddy’s Linux编译程式等与宿主系统无关…而且Ubuntu Studio也是Liddy’s Linux预装程式等不错的参照。总之,这是最后一步…编译与预装完毕所有的程式之后,就该进入美化部分…编译日志也将于编译部分完结之后完结。

首先试着修复一下Liddy’s Linux中的Plasma5环境中无法发声以及无法挂载系统的问题,最下策是每次使用Kpartitionmanager-4.2.0挂载各种分区,不过在此之前,还是希望安装以下程式包等试图解决问题——

partitionmanager-4.2.0.tar.xz,partitionmanager-21.08.0.tar.xz以及pulseaudio-qt-1.3.tar.xz

顺带着将落掉的KNotes亦一并安装…无法于Plasma5间直接关机/重启的问题现如今的咱还无法解决,至少查找了很多资料,只得出了一个“有程式无法关闭”的结论——网易云音乐或是Skype for Linux…?…然后于Liddy’s Linux中顺带着查找了一些资料,根据这些资料查找到了这里:/etc/dbus-1/session-local.conf,这个文件中设定了/usr/local/share/dbus-1/services为需要的文件,有了这些文件的设定,Dbus运行的时候就能够为KDE提权…参考资料见这些:https://blog.csdn.net/yager0203/article/details/89321999 以及 https://blog.csdn.net/dy18676742876/article/details/106923219
(发现是Dbus的原因,Liddy’s Linux中不能挂载硬盘分区,PulseAudio发声问题以及无法关机/重启的问题的缘由为终端中运行新安装的KDE分区管理器时,提示“org.freedesktop.DBus.Error.AccessDenied”)。
…回归正题,但是这个文件夹不存在,反倒存在/usr/share/dbus-1/services…更改为这个正确的位置,看看重启之后能否奏效——顺带着按照/etc/dbus-1/session-local.conf建立了名为“/etc/dbus-1/system-local.conf”的文件,其中指定服务文件所在文件夹为/usr/share/dbus-1/system-services,然后又因为Liddy’s Linux启动过程中加载D-bus之时报错,最终还是循着BLFS的指引删去了/etc/dbus-1/system.d/pulseaudio-system.conf…做完这些更改之后再次重启,仍旧不能够进行挂载硬盘分区等操作…另外删去这两个文件,以及再删去(全部做了备份,目标目录中源文件+backup的文件名)session.conf与system.conf也不奏效。
随后又查找了一些资料,看到需要Polkit,BLFS中elogind也需要重新安装,首先重装了elogind,没有什么效果——但是也有必要重新安装,因为上次安装完毕elogind所依赖的Linux-PAM(那时应该没有安装)与dbus(应该也有)还不完整,所以elogind不支持X Window Server,这次需要支持——重装完毕之后再重装了Polkit…于Polkit重装完毕之后顺利解决…关机与挂载硬盘的问题,但是出现了新的问题——输入确实是正确的密码,授权窗口中仍旧显示密码错误——可能是需要重装Polkit-Qt-0.119就能够解决。重启之后发现重装Polkit-Qt仍旧无法解决这个问题,而且/etc/passwd与/etc/group设置也没有错误…而且打开KSystemlog——这个也是需要root权限才能够打开的程式——没有任何异常…总之这个问题先搁置一旁。

总之,下次安装完毕X Window Server之后务必重装elogind与polkit。现在先试着重装一遍PulseAudio,重启之后看看能否播放声音…结果依旧无法播放,至少更改音量时没有提示音…Firefox(等非KDE框架)的程式能够正常播放声音,Konqueror(等KDE框架的程式)也能够正常播放,Falkon(等基于QtWebEngine)的程式亦同…看起来只是提示音没有么…总之问题差不多全部解决!返回Ubuntu Studio,进入Liddy’s Linux的chroot模式继续编译余下的程式罢。

编译DarkTable时遇到的问题:

/sources/darktable-3.6.1/src/common/iop_order.c: 在函数‘_insert_before.isra’中:
/sources/darktable-3.6.1/src/common/iop_order.c:272:15: 对不起,尚未实现:Graphite loop optimizations cannot be used (isl is not available).

——确确实实的无解,因为GCC当初编译的时候没有添加–with-isl,若是需要解决的话,只能够重新编译GCC…没办法,只能暂且降级至3.6.0再次编译一试。3.6.1版本的DarkTable发布于LFS ver 11.0之后…可能有新的变化,今年九月份之前的GCC暂未实现——但是3.6.0的darktable亦无法编译,同样的问题…最后一次降级!可恶…3.4.11…若是还不可以的话那也只能算是这个版本的Liddy’s Linux与darktable无缘…哎…果然无缘,看起来并非DarkTable源代码的问题…而是这个版本的Liddy’s Linux所安装的GCC库的问题…哎!!
(CXX编译选项:-floop-nest-optimize及其相关选项全部无法实现)
「重要」BLFS中编译GCC的时候,必须要添加–with-isl!!「重要」

于/etc/ld.so.conf间添加了“/usr/lib64”,因为发现有库文件安装至了/usr/lib64。随后添加了/etc/profile.d/pkgconfiglib64.sh,内容如下:

pathappend /usr/lib64/pkgconfig PKG_CONFIG_PATH

这样的话差不多所有程式就能够找到/usr/lib64与/usr/lib64/pkgconfig了。

编译Rawtherapee-5.8的时候遇到了如下错误:

/usr/include/wchar.h:582:24: 错误:‘malloc’ attribute argument 1 is ambiguous

解决方法已经有了,在这里:https://github.com/Beep6581/RawTherapee/issues/6324,下载页面中给定的fix-6324.patch.txr,去掉txt后缀再使用patch -Np1 -i命令进行源代码的修补就可以了…但是又遇到了如下错误:

/sources/rawtherapee-5.8/rtengine/rtthumbnail.cc: 在成员函数‘bool rtengine::Thumbnail::readAEHistogram(const Glib::ustring&)’中:
/sources/rawtherapee-5.8/rtengine/rtthumbnail.cc:2260:22: 错误:对‘fopen(const char, const char [3])’的调用没有匹配的函数 2260 | FILE f = g_fopen(fname.c_str(), “rb”);

方才的补丁间,有两处rtengine/rtthumbnail.cc中未有修补…2260行与2283行,同样按照补丁中的修补内容修补即可(FILE* f = g_fopen ==> FILE* f = ::g_fopen)。

编译ispc时需要修补有关于LLVM的漏洞…Liddy’s Linux所安装的LLVM版本为12.0.1,多加查找,看起来若是需要安装ispc,还需要重新编译LLVM…应该不是太重要的程式包,暂且略过。

编译Embree时出现了如下错误:

/sources/embree-3.13.1/tutorials/embree_tests/../external/catch.hpp:8753:58: 错误:call to non-‘constexpr’ function ‘long int sysconf(int)’

——答案是无解,只能不进行编译这个示例。

编译Blender时遇到的错误:/sources/blender-2.93.5/extern/audaspace/bindings/python/PySound.cpp:70:10: 致命错误:numpy/ndarrayobject.h:没有那个文件或目录
解决方法是pip3 install numpy——没有用,需要自行下载numpy并安装才可以…默认编译安装的话,numpy中有不少需要的.h头文件不会安装,故此运行了这个:cp -v /sources/numpy-1.21.2/numpy/core/include/numpy/*.h /usr/include/boost/python/numpy/ 命令,随后再进行编译Blender的时候于CXX_FLAGS间添加了“-I/usr/include/boost/python”——但是再次翻看Blender编译设置过程的时候,发现了/usr/lib/python3.9/site-packages/numpy/core/include——复制错地方了,抱歉…让Liddy’s Linux间多出一些不必要的文件——总之方才编译并且安装的numpy在/usr/lib/python3.9/site-packages/numpy-1.21.2-py3.9-linux-x86_64.egg/numpy/core/include/numpy中…重新设置一下,添加了“-DCMAKE_CXX_FLAGS=”-I/usr/lib/python3.9/site-packages/numpy-1.21.2-py3.9-linux-x86_64.egg/numpy/core/include -I/usr/include/Imath””,顺带着做了链接——使用“ln -sfv requests-2.26.0-py3.9.egg /usr/lib/python3.9/site-packages/requests”,否则Blender的cmake找不到requests这个Python3模块。

依旧是编译Blender时遇到的问题:

/sources/blender-2.93.5/source/blender/imbuf/intern/openexr/openexr_api.cpp:134:3: 错误:‘Int64’ does not name a type; did you mean ‘int64_t’?

…稍微查了一下,Int64这个类型是Microsoft Windows中定义的…最后才发现是OpenEXR的问题,Int64这个类型也是OpenEXR中定义的…于是于源文件之间添加了如下代码:#include (换行)#include (换行)#include ,顺带着也解决了一些其他类型未定义的问题。

最终链接库至程式blender的时候,又遇到了不少错误…重新设置——最终设置间又添加了这些内容:DOPENEXR_HALF_LIBRARY=/usr/lib/libOpenEXR.so -DOPENEXR_ILMIMF_LIBRARY=/usr/lib/libOpenEXR.so -DWITH_OPENSUBDIV=OFF不论,还需要逐一修改源文件,添加各种各样的头文件(没有效用)——因为最终编译blender主程式文件时遇到的错误全都是未定义的引用…最后还是于源代码所在目录下link.txt间添加了“/usr/lib/libOpenImageIO_Util.so”方得以解决。另外添加了pathappend /opt/blender PATH至新文件/etc/profile.d/blender.sh中。

编译Hugin所用的选项:-DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=OFF -DOPENEXR_HALF_LIBRARY=/usr/lib/libImath.so -DOPENEXR_ILMIMF_LIBRARY=/usr/lib/libOpenEXR.so -Wno-dev
编译VIGRA时也是这样的设定(另外添加了-DCMAKE_CXX_FLAGS=”-O2″)。

顺带着记录一下VIGRA的软件官方网站:https://ukoethe.github.io/ 以及wxWidgets的官方网站:https://www.wxwidgets.org/ Hunspell的官方网站:http://hunspell.github.io/

将VIGRA的文档从/usr/doc移动至了/usr/share/doc。另外做了一些修补…/usr/include/OpenEXR中ImfHeader.h,ImfXdr.h,ImfFrameBuffer.h,ImfRgba.h,ImfRgbaFile.h,ImfBoxAttribute.h,ImfChromaticities.h,ImfEnvmap.h,ImfMatrixAttribute.h,ImfVecAttribute.h中有关于Imath头文件的include定义全部添加了Imath/…这样的目录,以能够指向正确的位置(或许至今为止很多程式无法找到OpenEXR也与此有关)。

编译Hugin设置之时一直有这样的提示,但是Vigra库之中已通过编译添加了OpenEXR的支持…

Libvigraimpex found. But vigraimpex seems to compiled without OpenEXR support. OpenEXR support is required for Hugin.

试着根据这里:https://www.mail-archive.com/[email protected]/msg28467.html 进行源代码修补,整理好的修补文件见源文件中的huginandvigrapatchesforOpenEXR3.patch…此后设置的末尾又遇到了如下错误:

Target “PTBatcherGUI(还有很多)” links to target “ZLIB::ZLIB” but the target was not found.

参照网络间的文档,试着使用ld -lzlib –verbose这个命令寻找zlib库,输出结果为哪里都没有…于是做了链接/usr/lib/libzlib.so至libz.so…能够寻找得到,但是依旧会出现这些错误…看起来不是-lzlib的问题——也不是hugin中任何源代码(包括cmake配置文件等)的问题…最后再经多加查找,得出了结论——Liddy’s Linux间的CMake没有预置FindZLIB.cmake…找到了这里:https://github.com/Kitware/CMake/blob/master/Modules/FindZLIB.cmake 试着添加好了——不对,系统中已经存在着这个文件…——应该就是这个文件的问题,查了几个小时cmake语法得出的结论…但是看其拉FindZLIB.cmake也没有问题——最终通过将这些有打FindZLIB.cmake中复制的代码添加至hugin文件夹中CMakeLists.txt解决了问题。

(这里是第735行)add_library(ZLIB::ZLIB UNKNOWN IMPORTED)
set_target_properties(ZLIB::ZLIB PROPERTIES INTERFACE_INCLUDE_DIRECTORIES “/usr/include”)
set_property(TARGET ZLIB::ZLIB APPEND PROPERTY IMPORTED_LOCATION “/usr/lib”)

编译fyre时遇到的错误:/usr/include/c++/11.2.0/type_traits:3111:1: 错误:模板有 C 链接,

源代码中exr.cpp中去掉了”extern “C””就可以了。

…若是编译程式包的时候遇到了如下错误:

/usr/bin/ld: /usr/lib/libpodofo.a(PdfString.cpp.o): undefined reference to symbol ‘u8_to_u16’

解决方法是添加/usr/lib/libunistring.so至链接库中…编译Scribus的时候遇到的错误。还遇到过两次相近的错误(找不到链接库),不再重述。

因为安装了libxml++-2.6至/opt/libxml++-2.40.1,所以更新了/etc/ld.so.conf,另外做了有关于pkgconfig的链接——ln -sfv ../../../opt/libxml++-2.40.1/lib/pkgconfig/libxml++-2.6.pc /usr/lib/pkgconfig/libxml++-2.6.pc 。此外,还修正了Synfig-Studio源代码文件夹中synfig-core与synfig-studio文件夹根目录下CMakeLists.txt…最开始的include中更为了“/sources/synfig-1.5.0/cmake/”,否则会提示找不到相关cmake文件。

…编译Synfig-Studio中遇到了不少问题…看起来使用自带的脚本还是算了,从ETL ==> Synfig-Core ==> Synfig-Studio使用默认cmake设置进行编译罢。默认有文件安装至根目录/share中,所以移动文件之后,进行了ln -sfv usr/share /share的操作。随后编译Synfig-Core的过程中,执行Make命令的话,会将生成的库文件直接拷贝于/usr/lib/synfig/modules(-DCMAKE_INSTALL_PREFIX=/usr),执行Install命令的话,会将这些库文件进行自我覆盖(先删掉现有文件,然后再安装)——得到无法找到文件的错误…应该是Synfig的源代码中cmake文件设计为首先使用源文件根目录下的新建文件夹进行库文件的存放,再安装至指定位置(也就是说-DCMAKE_INSTALL_PREFIX就是临时存放库文件的位置)…总之这样的话,注释掉调用src/modules/cmake_install.cmake就可以了——编译完毕之后的库文件于编译之时直接安装至/usr/lib/synfig/modules,不必再进行自我删除随后覆盖的操作。

依旧是编译Synfig-Studio,依照CMake编译顺序查找漏洞——

make[2]: *** 没有规则可制作目标“images/synfig_bin”,由“/share/synfig/icons/classic/about_icon.png” 需求。 停止。

根据追踪CMake编译顺序以及相关文件,得出/usr/bin/synfig_bin缺失(synfig-core编译之时将synfig_bin这个程式更名为synfig…)…进行了ln -sfv synfig /usr/bin/synfig_bin,相关make文件(synfig-studio/build/images/CMakeFiles/build_images.dir中)也进行了更改(../images/synfig_bin 更为 /usr/bin/synfig)问题解决,并且能够正确生成图标。

编译Siril需要OpenCV,但是OpenCV只安装了相关的cmake文件(cmake能够找到OpenCV),Pkg-Config的相关文件没有安装…只好手动创建相关的Pkg-Config文件(参见/usr/lib/pkgconfig/opencv.pc),另外做了链接(ln -sfv opencv4/opencv2 /usr/include/opencv2)。

——现在正在Liddy’s Linux之间,经过测试,除Rapid Photo Downloader之外的所有程式全部能够正常启动…Rapid Photo Downloader与Plymouth无法启动的问题于接下来的实际使用测试间慢慢解决好了(Plymouth可选…),这样的话也就算是Liddy’s Linux间所有应该安装的程式全部安装完毕!方才也说过接下来就是不断实机测试与美化的阶段…然后预计11月01日正式发表罢,总之付出的辛苦都很值得,ver11.0的编译日志至现在也算是全部写完了…

总之,感谢能够看到这里。

今日安装的桌面程式列表如下:

Entangle Rawtherapee Blender Hugin MyPaint Fyre Scribus Synfig-Studio Pdfarranger FocusWriter Zim-desktop-wiki Audacious Siril Stellarium

这个版本的Liddy’s Linux中没有进行编译安装的桌面程式列表如下:

Darktable PikoPixel Rapid-Photo-Downloader

今日编译与安装的程式包列表如下:

KPMCore-21.08.0
partitionmanager-21.08.0(应该是库)
partitionmanager-4.2.0(应该是KDE磁盘管理程式)
pulseaudio-qt-1.3
Knotes-21.08.0
elogind-246.10 再安装
Polkit-0.119 再安装
Polkit-Qt-0.114.0 再安装(似乎重装没什么用)
PulseAudio-15.0 再安装(似乎重装也一样没有什么用)
Pugixml-1.11
GraphicsMagick-1.3.36
Libpeas-1.30.0
Entangle-3.0
Libiptcdata-1.0.5(./autogen.sh –prefix=/usr –disable-static)
Rawtherapee-5.8
TBB-2021.4.0
glfw-3.3.4
Embree-3.13.1(添加了-DEMBREE_ISPC_SUPPORT=OFF -DEMBREE_TUTORIALS=OFF)
Python3模块 Cython-0.9.24(pip3 install cython)
Numpy-1.21.2
Blender-2.93.5(安装至/opt/blender——添加了-DCMAKE_INSTALL_PREFIX=/opt/blender)
wxWidgets-3.1.5
VIGRA-1.11.1
libpano13-2.9.20
Hugin-2020.0.0
MyPaint-Brushers-2.0.1
PyGobject-3.42.0
Python3模块 setuptools-58.2.0(pip3 install setuptools)
MyPaint-2.0.1
Libglade-2.6.4
Fyre-1.0.1
Hunspell-1.7.0
Scribus-1.5.7
Libxml++-2.6-2.40.1(./configure –prefix=/opt/libxml++-2.40.1 –disable-static)
Synfig-1.5.0
python-distutils-extra-2.45
Pdfarranger-1.7.1
FocusWriter-1.7.6(qmake prefix=/usr)
Zim Desktop Wiki-0.74.1
Libconfig-1.5
Audacious-4.1
Audacious-Plugins-4.1
OpenCV-4.5.4
Siril-0.99.10.1
Stellarium-0.21.2
Rapid-Photo-Downloader-0.9.26

Published inLiddy's Linux编译日志

Be First to Comment

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

2 × 3 =