ubuntu 18.04编译OpenSCAD源代码,本意想研究一下如何加速 CGAL 的计算过程,目前还没完成。
编译过程如下:
$ git clone git://github.com/openscad/openscad.git $ cd openscad $ git submodule update --init # 每次重新编译,都需要先执行此脚本,否则会出现环境变量设置问题 $ sudo ./scripts/uni-get-dependencies.sh # #include <Qsci/qsciglobal.h> $ sudo apt-get install libqscintilla2-dev $ sudo apt-get install libqscintilla2-qt5-dev # 大量软件被卸载,但是可惜的是,如果不卸载 libpulse0 没办法安装 libpulse-dev # 不安装 libpulse-dev 就没办法安装 qtmultimedia5-dev $ sudo apt-get remove libpulse0 $ sudo apt-get install libpulse-dev # Project ERROR: Unknown module(s) in QT: multimedia $ sudo apt-get install qtmultimedia5-dev # 如果安装过 anaconda 则要在路径中去除 anaconda,否则会出现编译问题 $ qmake openscad.pro $ make
遇到两个难点,第一个难点是报错
Project ERROR: Unknown module(s) in QT: multimedia
为了解决这个问题,需要安装 qtmultimedia5-dev,但是安装的时候报告如下错误:
$ sudo apt-get install qtmultimedia5-dev 正在读取软件包列表... 完成 正在分析软件包的依赖关系树 正在读取状态信息... 完成 有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是 因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件 包尚未被创建或是它们已被从新到(Incoming)目录移出。 下列信息可能会对解决问题有所帮助: 下列软件包有未满足的依赖关系: qtmultimedia5-dev : 依赖: libpulse-dev 但是它将不会被安装 E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。
根据错误,我们手工安装 libpulse-dev , 结果继续报告如下错误:
$ sudo apt-get install libpulse-dev 正在读取软件包列表... 完成 正在分析软件包的依赖关系树 正在读取状态信息... 完成 有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是 因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件 包尚未被创建或是它们已被从新到(Incoming)目录移出。 下列信息可能会对解决问题有所帮助: 下列软件包有未满足的依赖关系: libpulse-dev : 依赖: libpulse0 (= 1:11.1-1ubuntu7.4) 但是 1:11.1-1ubuntu7.5 正要被安装 依赖: libpulse-mainloop-glib0 (= 1:11.1-1ubuntu7.4) 但是 1:11.1-1ubuntu7.5 正要被安装 E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。
这个原因是官方软件源依赖导致的问题,我们需要卸载 libpulse0 , 然后通过安装 libpulse-dev 的办法引入 libpulse0, 从而解决依赖问题。但是这个库非常基础,会引起大量软件包被卸载。所以,我们需要再次安装被卸载的软件包。
如下:
$ sudo apt-get remove libpulse0 正在读取软件包列表... 完成 正在分析软件包的依赖关系树 正在读取状态信息... 完成 下列软件包是自动安装的并且现在不需要了: cpu-checker docutils-common docutils-doc espeak-ng-data fonts-elusive-icons fonts-font-awesome fonts-mathjax freepats gimp-data gir1.2-accountsservice-1.0 gir1.2-gck-1 gir1.2-gcr-3 gir1.2-gdesktopenums-3.0 gir1.2-gdm-1.0 gir1.2-geoclue-2.0 gir1.2-gnomedesktop-3.0 gir1.2-gweather-3.0 gir1.2-mutter-2 gir1.2-nm-1.0 gir1.2-nma-1.0 gir1.2-rsvg-2.0 gir1.2-upowerglib-1.0 gjs gnome-control-center-faces gnome-online-accounts gnome-shell-common gnome-themes-extra gnome-themes-extra-data gtk2-engines-pixbuf gtk3-nocsd ipxe-qemu ipxe-qemu-256k-compat-efi-roms liba52-0.7.4 libamd2 libaribb24-0 libass9 libbabl-0.1-0 libbasicusageenvironment1 libbs2b0 libcacard0 libcamd2 libccolamd2 libcddb2 libchamplain-0.12-0 libchamplain-gtk-0.12-0 libcholmod3 libcolord-gtk1 libdca0 libde265-0 libdvbpsi10 libebml4v5 libfaad2 libfcitx-config4 libfdt1 libflite1 libfreerdp-common1.1.0 libfreerdp-utils1.1 libfreerdp2-2 libgadu3 libgdm1 libgeonames-common libgeonames0 libgimp2.0 libgjs0g libgroupsock8 libgsoap-2.8.60 libgstreamer-plugins-bad1.0-0 libgtk3-nocsd0 libgtkmm-3.0-1v5 libiscsi7 libjs-mathjax libjs-sphinxdoc libjs-underscore libkate1 liblilv-0-0 liblivemedia62 libluajit-5.1-2 libluajit-5.1-common libmad0 libmatroska6v5 libmetis5 libmicrodns0 libmjpegutils-2.1-0 libmms0 libmodplug1 libmozjs-52-0 libmpcdec6 libmpeg2-4 libmpeg2encpp-2.1-0 libmplex2-2.1-0 libmutter-2-0 libnfs11 libnorm1 libnss-myhostname libofa0 libopenal-data libopenal1 libopenmpt-modplug1 libpgm-5.2-0 libplacebo4 libpostproc54 libprotobuf-c1 libproxy-tools libpython-all-dev libqt5designer5 libqt5help5 libqt5x11extras5 librbd1 libresid-builder0c2a libserd-0-0 libsidplay2 libsodium23 libsord-0-0 libsoundtouch1 libspandsp2 libsratom-0-0 libsrtp2-1 libssh2-1 libsysmetrics1 libumfpack5 libupnp6 libusageenvironment3 libusbredirparser1 libva-wayland2 libvlc-bin libvlc5 libvlccore9 libvo-aacenc0 libvo-amrwbenc0 libwebrtc-audio-processing1 libwildmidi-config libwildmidi2 libwinpr-crt0.1 libwinpr-environment0.1 libwinpr-file0.1 libwinpr-handle0.1 libwinpr-heap0.1 libwinpr-interlocked0.1 libwinpr-library0.1 libwinpr-path0.1 libwinpr-synch0.1 libwinpr-sysinfo0.1 libwinpr-thread0.1 libwinpr-utils0.1 libwinpr2-2 libxcb-res0 libxen-4.9 libxenstore3.0 libzbar0 libzmq5 mercurial mercurial-common msr-tools mutter-common openjdk-8-jdk-headless pandoc pandoc-data pidgin-data pyflakes pyflakes3 pylint python-alabaster python-all python-all-dev python-astroid python-babel python-babel-localedata python-backports-abc python-backports-shutil-get-terminal-size python-backports.functools-lru-cache python-bleach python-cloudpickle python-concurrent.futures python-configparser python-dateutil python-decorator python-docutils python-egenix-mxdatetime python-egenix-mxtools python-entrypoints python-functools32 python-imagesize python-ipykernel python-ipython python-ipython-genutils python-isort python-jedi python-jinja2 python-jsonschema python-jupyter-client python-jupyter-core python-keyring python-keyrings.alt python-lazy-object-proxy python-logilab-common python-markupsafe python-mccabe python-mistune python-nbconvert python-nbformat python-numpydoc python-pandocfilters python-parso python-pathlib2 python-pickleshare python-pip python-pip-whl python-prompt-toolkit python-psutil python-pycodestyle python-pyflakes python-pygments python-pyqt5 python-pyqt5.qtopengl python-pyqt5.qtsvg python-pyqt5.qtwebkit python-qtawesome-common python-qtconsole python-roman python-rope python-scandir python-secretstorage python-simplegeneric python-singledispatch python-sphinx python-testpath python-tornado python-traitlets python-typing python-tz python-wcwidth python-wheel python-wrapt python-zmq python3-macaroonbakery python3-nacl python3-protobuf python3-pyflakes python3-pymacaroons python3-rfc3339 python3-tz qemu-block-extra qemu-system-common qemu-utils seabios session-shortcuts sound-icons sphinx-common spyder-common virtualbox-dkms vlc-bin vlc-data vlc-l10n vlc-plugin-notify vlc-plugin-qt vlc-plugin-samba vlc-plugin-skins2 vlc-plugin-video-output vlc-plugin-video-splitter vlc-plugin-visualization xwayland 使用'sudo apt autoremove'来卸载它(它们)。 下列软件包将被【卸载】: empathy gdm3 gimp gnome-control-center gnome-initial-setup gnome-orca gnome-settings-daemon gnome-shell gstreamer1.0-plugins-bad gstreamer1.0-pulseaudio indicator-bluetooth indicator-sound libasound2-plugins libcanberra-pulse libespeak-ng1 libespeak1 libfarstream-0.2-5 libfluidsynth1 libfreerdp-client2-2 libfreerdp-plugins-standard libgegl-0.3-0 libpcaudio0 libpulse-mainloop-glib0 libpulse0 libpulsedsp libpurple-bin libpurple0 libqt5multimedia5 libqt5multimediawidgets5 libsdl-image1.2 libsdl1.2debian libtelepathy-farstream3 mutter openjdk-8-jdk openjdk-8-jre orca pavucontrol pulseaudio pulseaudio-module-bluetooth pulseaudio-utils python-pyqt5.qtmultimedia python-qtawesome python-qtpy python-spyder qemu-kvm qemu-system-x86 remmina-plugin-rdp speech-dispatcher speech-dispatcher-audio-plugins speech-dispatcher-espeak-ng spyder telepathy-haze ubuntu-desktop ubuntu-session unity unity-control-center unity-greeter unity-session unity-settings-daemon virtualbox virtualbox-qt vlc vlc-plugin-base 升级了 0 个软件包,新安装了 0 个软件包,要卸载 63 个软件包,有 0 个软件包未被升级。 解压缩后将会空出 238 MB 的空间。 您希望继续执行吗? [Y/n] (正在读取数据库 ... 系统当前共安装有 317991 个文件和目录。) 正在卸载 empathy (3.25.90+really3.12.14-0ubuntu1) ... 正在卸载 ubuntu-desktop (1.417.4) ... 正在卸载 gdm3 (3.28.3-0ubuntu18.04.4) ... 正在卸载 gimp (2.8.22-1) ... 正在卸载 unity-control-center (15.04.0+18.04.20180216-0ubuntu1) ... 正在卸载 gnome-initial-setup (3.28.0-2ubuntu6.16.04.6) ... 正在卸载 gnome-orca (3.28.0-3ubuntu1) ... 正在卸载 ubuntu-session (3.28.1-0ubuntu3) ... 正在卸载 gnome-shell (3.28.4-0ubuntu18.04.3) ... 正在卸载 mutter (3.28.4-0ubuntu18.04.2) ... update-alternatives: 使用 /usr/bin/xfwm4 来在自动模式中提供 /usr/bin/x-window-manager (x-window-manager) 正在卸载 libtelepathy-farstream3:amd64 (0.6.2-1build1) ... 正在卸载 telepathy-haze (0.8.0-2.1) ... 正在卸载 gstreamer1.0-pulseaudio:amd64 (1.14.5-0ubuntu1~18.04.1) ... 正在卸载 indicator-sound (12.10.2+18.04.20180420.3-0ubuntu1) ... 正在卸载 pulseaudio-module-bluetooth (1:11.1-1ubuntu7.5) ... 正在卸载 libcanberra-pulse:amd64 (0.30-5ubuntu1) ... 正在卸载 pulseaudio (1:11.1-1ubuntu7.5) ... 正在卸载 libasound2-plugins:amd64 (1.1.1-1ubuntu1) ... 正在卸载 speech-dispatcher-espeak-ng (0.8.8-1ubuntu1) ... 正在卸载 libespeak-ng1:amd64 (1.49.2+dfsg-1) ... 正在卸载 libespeak1:amd64 (1.48.04+dfsg-5) ... 正在卸载 remmina-plugin-rdp:amd64 (1.2.0-rcgit.29+dfsg-1ubuntu1) ... 正在卸载 libfreerdp-client2-2:amd64 (2.0.0~git20170725.1.1648deb+dfsg1-7ubuntu0.1) ... 正在卸载 libfreerdp-plugins-standard:amd64 (1.1.0~git20140921.1.440916e+dfsg1-15ubuntu1.18.04.1) ... 正在卸载 libgegl-0.3-0:amd64 (0.3.30-1ubuntu1) ... 正在卸载 libpcaudio0 (1.0-1) ... 正在卸载 unity-session (3.28.1-0ubuntu3) ... 正在卸载 unity (7.5.0+18.04.20190304-0ubuntu1) ... 正在卸载 unity-greeter (18.04.0+18.04.20180314.1-0ubuntu2) ... 正在卸载 unity-settings-daemon (15.04.1+18.04.20180413-0ubuntu1.2) ... 正在卸载 pavucontrol (3.0-4) ... 正在卸载 pulseaudio-utils (1:11.1-1ubuntu7.5) ... 正在卸载 libpulsedsp:amd64 (1:11.1-1ubuntu7.5) ... 正在卸载 libpurple-bin (1:2.12.0-1ubuntu4) ... 正在卸载 spyder (3.2.6+dfsg1-2) ... 正在卸载 python-spyder (3.2.6+dfsg1-2) ... 正在卸载 python-qtawesome (0.4.4+ds1-1) ... 正在卸载 python-qtpy (1.3.1-1build1) ... 正在卸载 python-pyqt5.qtmultimedia (5.10.1+dfsg-1ubuntu2) ... 正在卸载 libqt5multimediawidgets5:amd64 (5.9.5-0ubuntu1) ... 正在卸载 libqt5multimedia5:amd64 (5.9.5-0ubuntu1) ... 正在卸载 vlc (3.0.8-0ubuntu18.04.1) ... 正在卸载 vlc-plugin-base:amd64 (3.0.8-0ubuntu18.04.1) ... 正在卸载 libsdl-image1.2:amd64 (1.2.12-8ubuntu0.1) ... 正在卸载 virtualbox-qt (5.2.34-dfsg-0~ubuntu18.04.1) ... 正在卸载 virtualbox (5.2.34-dfsg-0~ubuntu18.04.1) ... 正在卸载 qemu-kvm (1:2.11+dfsg-1ubuntu7.23) ... 正在卸载 qemu-system-x86 (1:2.11+dfsg-1ubuntu7.23) ... 正在卸载 libsdl1.2debian:amd64 (1.2.15+dfsg2-0.1ubuntu0.1) ... 正在卸载 openjdk-8-jdk:amd64 (8u242-b08-0ubuntu3~18.04) ... 正在卸载 openjdk-8-jre:amd64 (8u242-b08-0ubuntu3~18.04) ... 正在卸载 orca (3.28.0-3ubuntu1) ... 正在卸载 speech-dispatcher (0.8.8-1ubuntu1) ... 正在卸载 speech-dispatcher-audio-plugins:amd64 (0.8.8-1ubuntu1) ... 正在卸载 indicator-bluetooth (0.0.6+17.10.20170605-0ubuntu3) ... 正在卸载 gnome-control-center (1:3.28.2-0ubuntu0.18.04.6) ... 正在卸载 gnome-settings-daemon (3.28.1-0ubuntu1.3) ... 正在卸载 libpurple0 (1:2.12.0-1ubuntu4) ... 正在卸载 libfarstream-0.2-5:amd64 (0.2.8-4.1~build1) ... 正在卸载 gstreamer1.0-plugins-bad:amd64 (1.14.5-0ubuntu1~18.04.1) ... 正在卸载 libfluidsynth1:amd64 (1.1.9-1) ... 正在卸载 libpulse-mainloop-glib0:amd64 (1:11.1-1ubuntu7.5) ... 正在卸载 libpulse0:amd64 (1:11.1-1ubuntu7.5) ... 正在处理用于 mime-support (3.60ubuntu1) 的触发器 ... 正在处理用于 desktop-file-utils (0.23-1ubuntu3.18.04.2) 的触发器 ... 正在处理用于 install-info (6.5.0.dfsg.1-2) 的触发器 ... 正在处理用于 libglib2.0-0:amd64 (2.56.4-0ubuntu0.18.04.6) 的触发器 ... 正在处理用于 bamfdaemon (0.5.3+18.04.20180207.2-0ubuntu1) 的触发器 ... Rebuilding /usr/share/applications/bamf-2.index... 正在处理用于 libc-bin (2.27-3ubuntu1) 的触发器 ... 正在处理用于 libvlc-bin:amd64 (3.0.8-0ubuntu18.04.1) 的触发器 ... 正在处理用于 man-db (2.8.3-2ubuntu0.1) 的触发器 ... 正在处理用于 shared-mime-info (1.9-2) 的触发器 ... 正在处理用于 gnome-menus (3.13.3-11ubuntu1.1) 的触发器 ... 正在处理用于 hicolor-icon-theme (0.17-2) 的触发器 ... 正在处理用于 gconf2 (3.2.6-4ubuntu1) 的触发器 ...
根据上面的卸载记录,重新安装卸载的软件包,如下:
$ sudo apt-get install empathy gdm3 gimp gnome-control-center gnome-initial-setup gnome-orca gnome-settings-daemon gnome-shell gstreamer1.0-plugins-bad gstreamer1.0-pulseaudio indicator-bluetooth indicator-sound libasound2-plugins libcanberra-pulse libespeak-ng1 libespeak1 libfarstream-0.2-5 libfluidsynth1 libfreerdp-client2-2 libfreerdp-plugins-standard libgegl-0.3-0 libpcaudio0 libpulse-mainloop-glib0 libpulse0 libpulsedsp libpurple-bin libpurple0 libqt5multimedia5 libqt5multimediawidgets5 libsdl-image1.2 libsdl1.2debian libtelepathy-farstream3 mutter openjdk-8-jdk openjdk-8-jre orca pavucontrol pulseaudio pulseaudio-module-bluetooth pulseaudio-utils python-pyqt5.qtmultimedia python-qtawesome python-qtpy python-spyder qemu-kvm qemu-system-x86 remmina-plugin-rdp speech-dispatcher speech-dispatcher-audio-plugins speech-dispatcher-espeak-ng spyder telepathy-haze ubuntu-desktop ubuntu-session unity unity-control-center unity-greeter unity-session unity-settings-daemon virtualbox virtualbox-qt vlc vlc-plugin-base
第二个就是 anaconda 导致的编译问题,如果路径中存在 anaconda , qmake在搜索软件依赖的时候会把路径设置错误,导致编译运行异常。