Compilation Error (0.7.2) on Slackware

Errors, malfunctions, website typos.
Eupator
F6 - Feverfew
Posts: 8
Joined: Fri Sep 06, 2013 3:40 am

Compilation Error (0.7.2) on Slackware

Post by Eupator » Fri Sep 06, 2013 3:51 am

I'm trying to compile Giada on Slackware 14.0. Configuration works fine, but the program fails to link:

Code: Select all

$ make
Making all in src
make[1]: Entering directory `/usr/src/giada-0.7.2-src/src'
g++ -Wall -pedantic -Werror -g -O2   -o giada mixerHandler.o gd_about.o gd_mainWindow.o graphics.o patch.o gd_beatsInput.o gd_warnings.o ge_mixed.o recorder.o gd_bpmInput.o ge_waveform.o gui_utils.o utils.o gd_browser.o init.o gd_config.o gg_keyboard.o kernelAudio.o wave.o waveFx.o gd_editor.o gg_waveTools.o main.o mixer.o gd_keyGrabber.o glue.o ge_browser.o gd_devInfo.o plugin.o pluginHost.o gd_pluginList.o gd_pluginWindow.o ge_window.o dataStorage.o conf.o gd_actionEditor.o ge_muteChannel.o ge_actionChannel.o gd_pluginWindowGUI.o ge_actionWidget.o ge_envelopeChannel.o ge_pianoRoll.o kernelMidi.o gd_midiSetup.o  -lsndfile -lfltk -lXext -lX11 -lXft -lXpm -lm rtaudio/librtaudio.a -ljack -lasound -lpthread -ldl -lpulse-simple -lpulse -lsamplerate -lrtmidi -lpthread 
/usr/lib/gcc/i486-slackware-linux/4.7.1/../../../../i486-slackware-linux/bin/ld: /usr/local/lib/libfltk.a(fl_font.o): undefined reference to symbol 'FcPatternDestroy'
/usr/lib/gcc/i486-slackware-linux/4.7.1/../../../../i486-slackware-linux/bin/ld: note: 'FcPatternDestroy' is defined in DSO /usr/lib/libfontconfig.so.1 so try adding it to the linker command line
/usr/lib/libfontconfig.so.1: could not read symbols: Invalid operation
collect2: error: ld returned 1 exit status
make[1]: *** [giada] Error 1
make[1]: Leaving directory `/usr/src/giada-0.7.2-src/src'
make: *** [all-recursive] Error 1
I'd appreciate any help fixing this snafu. If it's something I'm doing wrong, I'd love to hear about it, and, if it's not, I hope this is a helpful bug report.

Thanks,
Eupator

User avatar
FFT
F14 - Syrian Rue
Posts: 518
Joined: Thu Mar 08, 2012 6:51 pm

Re: Compilation Error (0.7.2) on Slackware

Post by FFT » Fri Sep 06, 2013 2:32 pm

Hi Eupator,
it seems an error with FLTK:

Code: Select all

/usr/lib/gcc/i486-slackware-linux/4.7.1/../../../../i486-slackware-linux/bin/ld: /usr/local/lib/libfltk.a(fl_font.o): undefined reference to symbol 'FcPatternDestroy'
/usr/lib/gcc/i486-slackware-linux/4.7.1/../../../../i486-slackware-linux/bin/ld: note: 'FcPatternDestroy' is defined in DSO /usr/lib/libfontconfig.so.1 so try adding it to the linker command line
Are you linking against FLTK 1.3.0 or greater?

Eupator
F6 - Feverfew
Posts: 8
Joined: Fri Sep 06, 2013 3:40 am

Re: Compilation Error (0.7.2) on Slackware

Post by Eupator » Fri Sep 06, 2013 2:59 pm

Hi FFT,

I have fltk 1.3.2 installed.

Code: Select all

$ whereis fltk
fltk: /usr/src/fltk-1.3.2/fltk.xpm /usr/src/fltk-1.3.2/fltk.spec /usr/src/fltk-1.3.2/fltk.list

User avatar
FFT
F14 - Syrian Rue
Posts: 518
Joined: Thu Mar 08, 2012 6:51 pm

Re: Compilation Error (0.7.2) on Slackware

Post by FFT » Sat Sep 07, 2013 7:49 am

Eupator wrote:Hi FFT,

I have fltk 1.3.2 installed.

Code: Select all

$ whereis fltk
fltk: /usr/src/fltk-1.3.2/fltk.xpm /usr/src/fltk-1.3.2/fltk.spec /usr/src/fltk-1.3.2/fltk.list
That's good. So it seems that the fontconfig library (libfontconfig) is missing or not properly linked. Try to edit the makefile (giada/src/makefile.am), add this flag to giada_LDADD:

Code: Select all

-lfontconfig
and let's see what happens... Thanks!

Eupator
F6 - Feverfew
Posts: 8
Joined: Fri Sep 06, 2013 3:40 am

Re: Compilation Error (0.7.2) on Slackware

Post by Eupator » Sat Sep 07, 2013 11:11 am

I added -lfontconfig like you said, and I got this:

Code: Select all

$ make
 cd . && /bin/sh ./config.status Makefile 
config.status: creating Makefile
Making all in src
make[1]: Entering directory `/usr/src/giada-0.7.2-src/src'
 cd .. && /bin/sh /usr/src/giada-0.7.2-src/missing --run automake-1.11 --foreign src/Makefile
configure.ac:9: version mismatch.  This is Automake 1.11.5,
configure.ac:9: but the definition used by this AM_INIT_AUTOMAKE
configure.ac:9: comes from Automake 1.11.3.  You should recreate
configure.ac:9: aclocal.m4 with aclocal and run automake again.
WARNING: `automake-1.11' is probably too old.  You should only need it if
         you modified `Makefile.am', `acinclude.m4' or `configure.ac'.
         You might want to install the `Automake' and `Perl' packages.
         Grab them from any GNU archive site.
 cd .. && /bin/sh ./config.status src/Makefile depfiles
config.status: creating src/Makefile
config.status: executing depfiles commands
make[1]: Leaving directory `/usr/src/giada-0.7.2-src/src'
make[1]: Entering directory `/usr/src/giada-0.7.2-src/src'
g++ -Wall -pedantic -Werror -g -O2   -o giada mixerHandler.o gd_about.o gd_mainWindow.o graphics.o patch.o gd_beatsInput.o gd_warnings.o ge_mixed.o recorder.o gd_bpmInput.o ge_waveform.o gui_utils.o utils.o gd_browser.o init.o gd_config.o gg_keyboard.o kernelAudio.o wave.o waveFx.o gd_editor.o gg_waveTools.o main.o mixer.o gd_keyGrabber.o glue.o ge_browser.o gd_devInfo.o plugin.o pluginHost.o gd_pluginList.o gd_pluginWindow.o ge_window.o dataStorage.o conf.o gd_actionEditor.o ge_muteChannel.o ge_actionChannel.o gd_pluginWindowGUI.o ge_actionWidget.o ge_envelopeChannel.o ge_pianoRoll.o kernelMidi.o gd_midiSetup.o  -lsndfile -lfltk -lXext -lX11 -lXft -lXpm -lm rtaudio/librtaudio.a -ljack -lasound -lpthread -ldl -lpulse-simple -lpulse -lsamplerate -lrtmidi -lpthread 
/usr/lib/gcc/i486-slackware-linux/4.7.1/../../../../i486-slackware-linux/bin/ld: /usr/local/lib/libfltk.a(fl_font.o): undefined reference to symbol 'FcPatternDestroy'
/usr/lib/gcc/i486-slackware-linux/4.7.1/../../../../i486-slackware-linux/bin/ld: note: 'FcPatternDestroy' is defined in DSO /usr/lib/libfontconfig.so.1 so try adding it to the linker command line
/usr/lib/libfontconfig.so.1: could not read symbols: Invalid operation
collect2: error: ld returned 1 exit status
make[1]: *** [giada] Error 1
make[1]: Leaving directory `/usr/src/giada-0.7.2-src/src'
make: *** [all-recursive] Error 1
So, I tried the following:

Code: Select all

$ aclocal
/usr/share/aclocal/imlib.m4:9: warning: underquoted definition of AM_PATH_IMLIB
/usr/share/aclocal/imlib.m4:9:   run info '(automake)Extending aclocal'
/usr/share/aclocal/imlib.m4:9:   or see http://www.gnu.org/software/automake/manual/automake.html#Extending-aclocal

$ automake

$ make
CDPATH="${ZSH_VERSION+.}:" && cd . && /bin/sh /usr/src/giada-0.7.2-src/missing --run autoconf
/bin/sh ./config.status --recheck
running CONFIG_SHELL=/bin/sh /bin/sh ./configure --target=linux target_alias=linux PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/pkgconfig --no-create --no-recursion
checking for a BSD-compatible install... /usr/bin/ginstall -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for g++... g++
checking whether the C++ compiler works... yes
checking for C++ compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking for style of include used by make... GNU
checking dependency style of g++... gcc3
checking for gcc... gcc
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking dependency style of gcc... gcc3
checking whether make sets $(MAKE)... (cached) yes
checking for pthread_exit in -lpthread... yes
checking how to run the C++ preprocessor... g++ -E
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking FL/Fl.H usability... yes
checking FL/Fl.H presence... yes
checking for FL/Fl.H... yes
checking RtMidi.h usability... yes
checking RtMidi.h presence... yes
checking for RtMidi.h... yes
checking sndfile.h usability... yes
checking sndfile.h presence... yes
checking for sndfile.h... yes
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for SAMPLERATE... yes
checking X11/xpm.h usability... yes
checking X11/xpm.h presence... yes
checking for X11/xpm.h... yes
configure: creating ./config.status
 /bin/sh ./config.status
config.status: creating Makefile
config.status: creating src/Makefile
config.status: executing depfiles commands
Making all in src
make[1]: Entering directory `/usr/src/giada-0.7.2-src/src'
g++ -Wall -pedantic -Werror -g -O2   -o giada mixerHandler.o gd_about.o gd_mainWindow.o graphics.o patch.o gd_beatsInput.o gd_warnings.o ge_mixed.o recorder.o gd_bpmInput.o ge_waveform.o gui_utils.o utils.o gd_browser.o init.o gd_config.o gg_keyboard.o kernelAudio.o wave.o waveFx.o gd_editor.o gg_waveTools.o main.o mixer.o gd_keyGrabber.o glue.o ge_browser.o gd_devInfo.o plugin.o pluginHost.o gd_pluginList.o gd_pluginWindow.o ge_window.o dataStorage.o conf.o gd_actionEditor.o ge_muteChannel.o ge_actionChannel.o gd_pluginWindowGUI.o ge_actionWidget.o ge_envelopeChannel.o ge_pianoRoll.o kernelMidi.o gd_midiSetup.o  -lfontconfig -lsndfile -lfltk -lXext -lX11 -lXft -lXpm -lm rtaudio/librtaudio.a -ljack -lasound -lpthread -ldl -lpulse-simple -lpulse -lsamplerate -lrtmidi -lpthread 
kernelAudio.o: In function `kernelAudio::jackGetHandle()':
/usr/src/giada-0.7.2-src/src/kernelAudio.cpp:408: undefined reference to `RtApi::__HACK__getJackClient()'
/usr/local/lib/libfltk.a(screen_xywh.o): In function `screen_init()':
screen_xywh.cxx:(.text+0x21): undefined reference to `XineramaIsActive'
screen_xywh.cxx:(.text+0x3e): undefined reference to `XineramaQueryScreens'
collect2: error: ld returned 1 exit status
make[1]: *** [giada] Error 1
make[1]: Leaving directory `/usr/src/giada-0.7.2-src/src'
make: *** [all-recursive] Error 1
Which is at least a different error? But I'm not sure what to do with this, either.

User avatar
FFT
F14 - Syrian Rue
Posts: 518
Joined: Thu Mar 08, 2012 6:51 pm

Re: Compilation Error (0.7.2) on Slackware

Post by FFT » Sat Sep 07, 2013 4:32 pm

Eupator wrote: /usr/local/lib/libfltk.a(screen_xywh.o): In function `screen_init()':
screen_xywh.cxx:(.text+0x21): undefined reference to `XineramaIsActive'
screen_xywh.cxx:(.text+0x3e): undefined reference to `XineramaQueryScreens'
Ok, try to add also

Code: Select all

-lXinerama
inside makefile.am...

Eupator
F6 - Feverfew
Posts: 8
Joined: Fri Sep 06, 2013 3:40 am

Re: Compilation Error (0.7.2) on Slackware

Post by Eupator » Sat Sep 07, 2013 6:11 pm

Okay, that removed a couple more errors, but I still have:

Code: Select all

$ make
 cd . && /bin/sh ./config.status Makefile 
config.status: creating Makefile
Making all in src
make[1]: Entering directory `/usr/src/giada-0.7.2-src/src'
 cd .. && /bin/sh ./config.status src/Makefile depfiles
config.status: creating src/Makefile
config.status: executing depfiles commands
make[1]: Leaving directory `/usr/src/giada-0.7.2-src/src'
make[1]: Entering directory `/usr/src/giada-0.7.2-src/src'
g++ -Wall -pedantic -Werror -g -O2   -o giada mixerHandler.o gd_about.o gd_mainWindow.o graphics.o patch.o gd_beatsInput.o gd_warnings.o ge_mixed.o recorder.o gd_bpmInput.o ge_waveform.o gui_utils.o utils.o gd_browser.o init.o gd_config.o gg_keyboard.o kernelAudio.o wave.o waveFx.o gd_editor.o gg_waveTools.o main.o mixer.o gd_keyGrabber.o glue.o ge_browser.o gd_devInfo.o plugin.o pluginHost.o gd_pluginList.o gd_pluginWindow.o ge_window.o dataStorage.o conf.o gd_actionEditor.o ge_muteChannel.o ge_actionChannel.o gd_pluginWindowGUI.o ge_actionWidget.o ge_envelopeChannel.o ge_pianoRoll.o kernelMidi.o gd_midiSetup.o  -lXinerama -lfontconfig -lsndfile -lfltk -lXext -lX11 -lXft -lXpm -lm rtaudio/librtaudio.a -ljack -lasound -lpthread -ldl -lpulse-simple -lpulse -lsamplerate -lrtmidi -lpthread 
kernelAudio.o: In function `kernelAudio::jackGetHandle()':
/usr/src/giada-0.7.2-src/src/kernelAudio.cpp:408: undefined reference to `RtApi::__HACK__getJackClient()'
collect2: error: ld returned 1 exit status
make[1]: *** [giada] Error 1
make[1]: Leaving directory `/usr/src/giada-0.7.2-src/src'
make: *** [all-recursive] Error 1
Thanks for your help!

User avatar
FFT
F14 - Syrian Rue
Posts: 518
Joined: Thu Mar 08, 2012 6:51 pm

Re: Compilation Error (0.7.2) on Slackware

Post by FFT » Mon Sep 09, 2013 8:51 am

We are almost there! That's a known issue, it seems that the rtaudio copy inside giada has not been compiled with the --with-jack flag. Could you paste the output of

Code: Select all

make libs
?

Thanks!

Eupator
F6 - Feverfew
Posts: 8
Joined: Fri Sep 06, 2013 3:40 am

Re: Compilation Error (0.7.2) on Slackware

Post by Eupator » Mon Sep 09, 2013 3:09 pm

Code: Select all

giada-0.7.2-src/src$ make libs
Building RtAudio for Linux...
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for g++... g++
checking whether the C++ compiler works... yes
checking for C++ compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking for ranlib... ranlib
checking for ar... /usr/bin/ar
checking for gcc... gcc
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking sys/ioctl.h usability... yes
checking sys/ioctl.h presence... yes
checking for sys/ioctl.h... yes
checking for unistd.h... (cached) yes
checking whether to compile debug version... no
checking for gettimeofday... yes
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking for audio API... using JACK
checking for jack_client_open in -ljack... yes
checking for snd_pcm_open in -lasound... yes
using ALSA
checking for snd_pcm_open in -lasound... (cached) yes
using PulseAudio
checking for PULSE... yes
checking for pthread_create in -lpthread... yes
configure: creating ./config.status
config.status: creating rtaudio-config
config.status: creating librtaudio.pc
config.status: creating Makefile
config.status: creating tests/Makefile
make[1]: Entering directory `/usr/src/giada-0.7.2-src/src/rtaudio'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/usr/src/giada-0.7.2-src/src/rtaudio'
No problems there, it seems.

User avatar
FFT
F14 - Syrian Rue
Posts: 518
Joined: Thu Mar 08, 2012 6:51 pm

Re: Compilation Error (0.7.2) on Slackware

Post by FFT » Tue Sep 10, 2013 7:17 am

Eupator wrote: No problems there, it seems.
Try with a clean directory: make clean or better delete everything and untar the package from scratch. We're almost there!

Post Reply