ubuntu 18.04编译OpenSCAD源代码,本意想研究一下如何加速 CGAL 的计算过程,目前还没完成。
编译过程如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
$ 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 |
遇到两个难点,第一个难点是报错
1 |
Project ERROR: Unknown module(s) in QT: multimedia |
为了解决这个问题,需要安装 qtmultimedia5-dev,但是安装的时候报告如下错误:
1 2 3 4 5 6 7 8 9 10 11 12 |
$ sudo apt-get install qtmultimedia5-dev 正在读取软件包列表... 完成 正在分析软件包的依赖关系树 正在读取状态信息... 完成 有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是 因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件 包尚未被创建或是它们已被从新到(Incoming)目录移出。 下列信息可能会对解决问题有所帮助: 下列软件包有未满足的依赖关系: qtmultimedia5-dev : 依赖: libpulse-dev 但是它将不会被安装 E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。 |
根据错误,我们手工安装 libpulse-dev , 结果继续报告如下错误:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
$ 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, 从而解决依赖问题。但是这个库非常基础,会引起大量软件包被卸载。所以,我们需要再次安装被卸载的软件包。
如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 |
$ 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) 的触发器 ... |
根据上面的卸载记录,重新安装卸载的软件包,如下:
1 |
$ 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在搜索软件依赖的时候会把路径设置错误,导致编译运行异常。