sudo apt-get -y install jack &&
sudo apt-get -y install libjack-dev &&
sudo apt-get -y install libjack-jackd2-dev &&
sudo apt-get -y install jackd &&
sudo apt-get -y install jackd2 &&
sudo apt-get -y install qjackctl
如果任何依赖库出问题,(没有新意地说)请尝试运行sudo apt-get install --reinstall <name-of-packages>
4.2 编译遇到报错,编译中止
如果报错内容是:
/usr/bin/ld: cannot find -lgtkmm-2.4
/bin/ld: cannot find -lgdkmm-2.4
collect2: error: ld returned 1 exit status
看似ld没有找到,但是我们确实安装了libgtkmm-2.4-dev
,不是么?
解决方法:
sudo apt-get install --reinstall libgtkmm-2.4-1v5
sudo apt-get install --reinstall libgtkmm-2.4-dev
然后在目录下执行,./waf
(可以不用./waf clean
)
*如果你想看我的排查过程的话,可以看4.3,看似解决方案很容易但问题很具有迷惑性。
4.3 排查/usr/bin/ld: cannot find -lgtkmm-2.4
的过程自述:
首先看到这问题,动态库没找到,并不是新鲜事。网上并没有直接关联这个问题的信息。
第一个想法是——库没安装对?我移除了libgtkmm-3.0
,确认了一下 sudo apt-get -y install libgtkmm-2.4-dev
是正确执行了的,甚至make clean
重新来过,问题依旧存在。
随后我想到可能路径特殊,但搜索发现libgtkmm-2.4.so
安然的在正常目录下,
没错,在的呢,怎么会没找到呢?那建一个符号链接吧
sudo ln -s /usr/lib/x86_64-linux-gnu/libgtkmm-2.4.so /usr/lib/lgtkmm-2.4.so
双保险一下,运行ldconfig
,这下总该没问题了吧,但依旧报错。我非常郁闷,想不明白。直到去目录下看文件,发现了这个,
事实上它只是个空链接,链接目标并不存在,我们发现问题了
才明白libgtkmm-2.4.so
只是一个符号链接,而链接到的动态库却根本不存在,难怪会报错,但是怎么会发生这个问题的呢,把搜索关键字变成“libgtkmm-2.4.so missing”之后,发现了inkscape在ubuntu下也会有相同问题[报错 ],一个历史遗留问题,解决方式是重新安装sudo apt-get install --reinstall libgtkmm-2.4-1v5
重新安装之后,再搜索,
果然,链接到的实体动态库libgtkmm-2.4.so.1.1.0
出现了,问题也就解决了。
4.4 我机器上的./waf configure
结果(仅供参考)
Setting top to : /home/aileen365/project/ardour
Setting out to : /home/aileen365/project/ardour/build
Checking for 'gcc' (c compiler) : /usr/bin/gcc
Checking for 'g++' (c++ compiler) : /usr/bin/g++
Global Configuration
* Install prefix : /usr/local
* Debuggable build : True
* Build documentation : False
Ardour Configuration
* Will build against private GTK dependency stack : no
* Will rely on libintl built into libc : yes
* Will build against private Ardour dependency stack : no
Checking for function dlopen : yes
Checking for boost library >= 1.39 : ok
Checking for program pkg-config : /usr/bin/pkg-config
Checking for 'alsa' : yes
Checking for 'glib-2.0' >= 2.28 : yes
Checking for 'gthread-2.0' >= 2.2 : yes
Checking for 'glibmm-2.4' >= 2.32.0 : yes
Checking for 'sndfile' >= 1.0.18 : yes
Checking for 'giomm-2.4' >= 2.2 : yes
Checking for 'libcurl' >= 7.0.0 : yes
Checking for 'libarchive' >= 3.0.0 : yes
Checking for 'liblo' >= 0.26 : yes
Checking for 'taglib' >= 1.6 : yes
Checking for 'vamp-sdk' >= 2.1 : yes
Checking for 'vamp-hostsdk' >= 2.1 : yes
Checking for 'rubberband' : yes
Checking for sndfile RF64=>RIFF support : Not found, no RF64-to-WAV support
Checking for clang : no
Checking for 'libudev' : yes
Checking for 'fftw3f' : yes
Checking for 'aubio' >= 0.3.2 : yes
Checking for 'aubio' >= 0.4.0 : yes
Checking for 'libxml-2.0' : yes
Checking for 'sigc++-2.0' >= 2.0 : yes
Checking for function getmntent : yes
Checking for header execinfo.h : yes
Checking for header unistd.h : yes
Checking for function posix_memalign : yes
Checking for function localtime_r : yes
Checking for header boost/shared_ptr.hpp : yes
Checking for header boost/weak_ptr.hpp : yes
Checking for 'cppunit' >= 1.12.0 : not found
Checking for header boost/shared_ptr.hpp : yes
Checking for header boost/weak_ptr.hpp : yes
Checking for header boost/shared_ptr.hpp : yes
Checking for header boost/weak_ptr.hpp : yes
Checking for 'libusb-1.0' : not found
You are missing the libusb-1.0 development package needed to compile Push2 support
Checking for header cwiid.h : yes
Checking for header bluetooth/bluetooth.h : yes
Checking for 'cwiid' >= 0.6.00 : yes
Checking for 'jack' >= 0.121.0 : yes
Checking for JACK metadata API : ok
Checking for jack_port_rename() : ok
Checking for program gas,as,gcc : /usr/bin/as
Checking for 'lrdf' >= 0.4.0 : yes
Checking for 'samplerate' >= 0.1.0 : yes
Checking for 'lv2' >= 1.0.0 : yes
Checking for 'lv2' >= 1.2.0 : yes
Checking for 'lv2' >= 1.10.0 : yes
Checking for 'serd-0' >= 0.14.0 : yes
Checking for 'sord-0' >= 0.8.0 : yes
Checking for 'sratom-0' >= 0.2.0 : yes
Checking for 'lilv-0' >= 0.14.0 : yes
Checking for 'lilv-0' >= 0.16.0 : yes
Checking for 'lilv-0' >= 0.19.2 : yes
Checking for 'lilv-0' >= 0.21.3 : yes
Checking for 'suil-0' >= 0.6.0 : not found
Checking for 'ogg' >= 1.1.2 : yes
Checking for 'flac' >= 1.2.1 : yes
Checking for header sys/vfs.h : yes
Checking for header sys/statvfs.h : yes
Checking for header unistd.h : yes
Checking for header boost/shared_ptr.hpp : yes
Checking for header boost/weak_ptr.hpp : yes
Checking for header boost/scoped_ptr.hpp : yes
Checking for header boost/ptr_container/ptr_list.hpp : yes
Checking for 'gtkmm-2.4' >= 2.8 : yes
Checking for 'gtk+-2.0' >= 2.12.1 : yes
Checking for 'samplerate' >= 0.1.7 : yes
Checking for 'fftw3f' >= 3.3.5 : not found
Checking for header boost/shared_ptr.hpp : yes
Checking for header boost/format.hpp : yes
Checking for 'cairomm-1.0' >= 1.8.4 : yes
Checking for 'lv2' >= 1.0.0 : yes
Checking for 'cairo' >= 1.12.0 : yes
Checking for 'gthread-2.0' >= 2.10.1 : yes
Checking for 'gtk+-2.0' >= 2.18 : yes
Checking for 'x11' >= 1.1 : yes
Checking for 'pangoft2' >= 1.36.8 : yes
Checking for 'fontconfig' : yes
Checking for header boost/shared_ptr.hpp : yes
Checking for header boost/weak_ptr.hpp : yes
session-utils depend on the dummy backend.
* build session-utils : no
Checking for 'dbus-1' : yes
Checking for function readline : yes
* Build documentation : False
* Debuggable build : True
* Export all symbols (backtrace) : False
* Install prefix : /usr/local
* Strict compiler flags : []
* Internal Shared Libraries : True
* Use External Libraries : False
* Library exports hidden : True
* Free/Demo copy : False
* ALSA DBus Reservation : True
* Architecture flags : None
* Aubio : True
* AudioUnits : False
* Build target : x86_64
* Canvas Test UI : False
* Beatbox test app : False
* CoreAudio : False
* CoreAudio 10.5 compat : False
* Debug RT allocations : False
* Debug Symbols : True
* Denormal exceptions : False
* FLAC : True
* FPU optimization : True
* Freedesktop files : False
* Libjack linking : link
* Libjack metadata : True
* Lua Binding Doc : False
* LV2 UI embedding : False
* LV2 support : True
* LV2 extensions : True
* LXVST support : True
* Mac VST support : False
* OGG : True
* Phone home : True
* Process thread timing : False
* Program name : Ardour
* Samplerate : True
* PT format : False
* PTW32 Semaphore : False
* Threaded WaveViews : True
* Translation : True
* Unit tests : False
* Windows VST support : False
* Wiimote support : True
* Windows key : Mod4><Super
* PortAudio Backend : False
* CoreAudio/Midi Backend : False
* ALSA Backend : False
* Dummy backend : False
* JACK Backend : True
* Builstack : -system-
* Mac i386 Architecture : False
* Mac ppc Architecture : False
* C compiler flags : ['-I/home/aileen365/project/ardour', '-DWAF_BUILD', '-g', '-fshow-column', '-DARCH_X86', '-mmmx', '-msse', '-mfpmath=sse', '-DUSE_XMMINTRIN', '-DBUILD_SSE_OPTIMIZATIONS', '-DLXVST_64BIT', '-Wall', '-Wpointer-arith', '-Wcast-qual', '-Wcast-align', '-Wno-unused-parameter', '-DBOOST_SYSTEM_NO_DEPRECATED', '-D_ISOC9X_SOURCE', '-D_LARGEFILE64_SOURCE', '-D_FILE_OFFSET_BITS=64', '-DENABLE_NLS', '-DPROGRAM_NAME="Ardour"', u'-DPROGRAM_VERSION="5"', '-Wstrict-prototypes', '-Wmissing-prototypes']
* C++ compiler flags : ['-I/home/aileen365/project/ardour', '-DWAF_BUILD', '-g', '-fshow-column', '-DARCH_X86', '-mmmx', '-msse', '-mfpmath=sse', '-DUSE_XMMINTRIN', '-DBUILD_SSE_OPTIMIZATIONS', '-DLXVST_64BIT', '-Wall', '-Wpointer-arith', '-Wcast-qual', '-Wcast-align', '-Wno-unused-parameter', '-DBOOST_SYSTEM_NO_DEPRECATED', '-D_ISOC9X_SOURCE', '-D_LARGEFILE64_SOURCE', '-D_FILE_OFFSET_BITS=64', '-DENABLE_NLS', '-DPROGRAM_NAME="Ardour"', u'-DPROGRAM_VERSION="5"', '-Woverloaded-virtual', '-Wno-unused-local-typedefs', '-D__STDC_LIMIT_MACROS', '-D__STDC_FORMAT_MACROS', '-DCANVAS_COMPATIBILITY', '-DCANVAS_DEBUG']
* Linker flags : ['']
'configure' finished successfully (7.288s)
4.5 apt-cache depends ardour
依赖库结果(仅供参考)
ardour
Depends: ardour-data
Depends: jackd
Depends: libasound2
Depends: libatkmm-1.6-1v5
Depends: libaubio4
Depends: libc6
Depends: libcairo2
Depends: libcairomm-1.0-1v5
Depends: libcurl3-gnutls
Depends: libcwiid1
Depends: libfftw3-single3
Depends: libfontconfig1
Depends: libgcc1
Depends: libgdk-pixbuf2.0-0
Depends: libglib2.0-0
Depends: libglibmm-2.4-1v5
Depends: libgtk2.0-0
Depends: libgtkmm-2.4-1v5
|Depends: libjack-jackd2-0
Depends: <libjack-0.116>
libjack-jackd2-0
libjack0
Depends: liblilv-0-0
Depends: liblo7
Depends: liblrdf0
Depends: libltc11
Depends: libpango-1.0-0
Depends: libpangocairo-1.0-0
Depends: libpangoft2-1.0-0
Depends: libpangomm-1.4-1v5
Depends: librubberband2v5
Depends: libsamplerate0
Depends: libsigc++-2.0-0v5
Depends: libsndfile1
Depends: libstdc++6
Depends: libsuil-0-0
Depends: libtag1v5
Depends: libvamp-hostsdk3v5
Depends: libvamp-sdk2v5
Depends: libx11-6
Depends: libxml2
Breaks: ardour3
|Recommends: firefox
Recommends: <www-browser>
dillo
edbrowse
lynx:i386
netsurf
netsurf-fb
netsurf-gtk
qupzilla
chimera2
chromium-browser
elinks
epiphany-browser
firefox
konqueror
links
links2
midori
netrik
rekonq
w3m:i386
xemacs21-mule
xemacs21-mule-canna-wnn
xemacs21-nomule
Replaces: ardour3
5. 尾声
好了,同学们,现在你们拥有了专业级的DAW,而且全免费。什么?不会录音和混音,什么都不懂?!好吧,如果读者你和我一样还是一个Sound Engineering菜鸟的话,我有一个可爱的开源DAW推荐,就是NON,它有很简短鲜明的文档,可以让读者短时间里明白Edit和Mixer,它和Ardour一样通过JACK录音,以及NON是一个麻雀虽小,五脏俱全的轻级DAW。哈哈,我绕了一圈,最后推荐了一个文档和安装都友好的NON。从NON的教程再回到Ardour会容易一些,Ardour也拥有更友好的界面,祝大家玩DAW愉快。在最后每个大牛都会说,DAW是不重要的,自己的理解和品味最重要。