fluid-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[fluid-dev] Re: fluidsynth and jack on mac


From: Ebrahim Mayat
Subject: [fluid-dev] Re: fluidsynth and jack on mac
Date: Wed, 10 Mar 2004 20:19:31 +0200

On Mar 9, 2004, at 9:21 PM, Josh Green wrote:

Whats the output of "pkg-config --cflags --libs jack" ? Its likely there
is something wrong with the pkg-config data which is causing the build
to not work right.

ebrahimm% pkg-config --cflags --libs jack
-I/usr/local/include  -L/usr/local/lib -ljack -lpthread -ldl -lrt

You're absolutely right. "-ljack" and "-lrt" are still there and there is no "-framework jack".

Checking the *.pc files gives the following:

ebrahimm% more /usr/local/lib/pkgconfig/fluidsynth.pc
prefix=/usr/local
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include

Name: FluidSynth
Description: Software SoundFont synth
Version: 1.0.3
Libs: -L${libdir} -lfluidsynth
Cflags: -I${includedir}
ebrahimm% more /usr/local/lib/pkgconfig/jack.pc
prefix=/usr/local
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include

Name: jack
Description: the Jack Audio Connection Kit: a low latency synchronous
callback-based media server
Version: 0.82.0
Libs: -L${libdir} -ljack -lpthread -ldl -lrt
Cflags: -I${includedir}


I then edited the jack.pc file using pico as follows:

ebrahimm% more /usr/local/lib/pkgconfig/jack.pc
prefix=/usr/local
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include

Name: jack
Description: the Jack Audio Connection Kit: a low latency synchronous
callback-based media server
Version: 0.82.0
Libs: -L${libdir} -L/usr/local/lib/jack_portaudio.so -framework jack -lpthread -ldl -lSystem
Cflags: -I${includedir} -I/Library/Frameworks/Jack.framework/Headers

did a "make clean" then "make". This...only returns the same error message of undefined jack symbols:

(snip)
gcc -Wall -O2 -fomit-frame-pointer -funroll-all-loops -finline-functions -Wall -W -Wpointer-arith -Wbad-function-cast -Wcast-qual -Wcast-align -Wstrict-prototypes -Wno-unused -Winline -framework MidiShare -o .libs/fluidsynth fluidsynth-fluidsynth.o -L/usr/local/lib -L/sw/lib -L/usr/lib -L./.libs -lfluidsynth -lm -lreadline -lncurses -L/usr/local/lib/jack_portaudio.so -ldl -lSystem -lpthread ld: warning prebinding disabled because dependent library: /usr/local/lib/libfluidsynth.1.dylib is not prebound
ld: warning multiple definitions of symbol _BC
/sw/lib/libreadline.dylib(terminal.so) definition of _BC
/sw/lib/libncurses.dylib(lib_termcap.o) definition of _BC
ld: warning multiple definitions of symbol _UP
/sw/lib/libreadline.dylib(terminal.so) definition of _UP
/sw/lib/libncurses.dylib(lib_termcap.o) definition of _UP
ld: warning multiple definitions of symbol _PC
/sw/lib/libreadline.dylib(terminal.so) definition of _PC
/sw/lib/libncurses.dylib(lib_tputs.o) definition of _PC
ld: Undefined symbols:
_jack_activate
_jack_client_close
_jack_client_new
_jack_connect
_jack_get_ports
_jack_get_sample_rate
_jack_on_shutdown
_jack_port_get_buffer
_jack_port_name
_jack_port_register
_jack_set_buffer_size_callback
_jack_set_process_callback
_jack_set_sample_rate_callback

It looks like the problem is rather at "ld: warning prebinding disabled because dependent library: /usr/local/lib/libfluidsynth.1.dylib is not prebound"

Could the failure to prebind "libfluidsynth" be due to the following diagnostic messages from the build file?:

ld: warning -dylib_install_name /usr/local/lib/libfluidsynth.1.dylib not found in segment address table LD_SEG_ADDR_TABLE /sw/var/lib/fink/prebound/seg_addr_table
ld: warning -undefined suppress disables -prebind
(snip)
ranlib .libs/libfluidsynth.a
ranlib: file: .libs/libfluidsynth.a(libfluidsynth_la-fluid_alsa.o) has no symbols ranlib: file: .libs/libfluidsynth.a(libfluidsynth_la-fluid_ladspa.o) has no symbols ranlib: file: .libs/libfluidsynth.a(libfluidsynth_la-fluid_midishare.o) has no symbols ranlib: file: .libs/libfluidsynth.a(libfluidsynth_la-fluid_oss.o) has no symbols
creating libfluidsynth.la
(cd .libs && rm -f libfluidsynth.la && ln -s ../libfluidsynth.la libfluidsynth.la)

I checked out the LD_SEG_ADDR_TABLE environment variable:

ebrahimm% more /sw/var/lib/fink/prebound/seg_addr_table
0x20230000      /sw/lib/libapt-inst.1.0.dylib
0x20320000      /sw/lib/libapt-pkg.3.2.dylib
0x20510000      /sw/lib/libbz2.1.dylib
0x20000000      /sw/lib/libcharset.1.dylib
0x20920000      /sw/lib/libdb-3.3.dylib
0x20a40000      /sw/lib/libdb_cxx-3.3.dylib
0x20570000      /sw/lib/libdl.0.dylib
0x20cd0000      /sw/lib/libexpat.0.dylib
0x20720000      /sw/lib/libform.5.dylib
0x20d70000      /sw/lib/libglut.3.dylib
0x20690000      /sw/lib/libgnugetopt.1.dylib
0x20740000      /sw/lib/libhistory.4.dylib
0x20010000      /sw/lib/libiconv.2.dylib
0x20540000      /sw/lib/libintl.1.dylib
0x20780000      /sw/lib/libmenu.5.dylib
0x20790000      /sw/lib/libncurses.5.dylib
0x20580000      /sw/lib/libnetpbm.10.dylib
0x20820000      /sw/lib/libpanel.5.dylib
0x206a0000      /sw/lib/libpbm.9.dylib
0x206d0000      /sw/lib/libpgm.9.dylib
0x205d0000      /sw/lib/libpng.3.dylib
0x20630000      /sw/lib/libpng12.0.dylib
0x206e0000      /sw/lib/libpnm.9.dylib
0x20700000      /sw/lib/libppm.9.dylib
0x20830000      /sw/lib/libreadline.4.dylib
#seg_addr_table: Do not remove the following line, it is used by the seg_addr_table tool
0x90000000      0xa0000000      <<< Next split address to assign >>>
#seg_addr_table: Do not remove the following line, it is used by the seg_addr_table tool
0x21090000      <<< Next flat address to assign >>>

I'm looking into how I could insert the -dylib_install_name "/usr/local/lib/libfluidsynth.1.dylib" into the segment address table (defined by the environmental variable LD_SEG_ADDR_TABLE) found in "/sw/var/lib/fink/prebound/seg_addr_table". Firstly, "/usr/local/lib/libfluidsynth.1.dylib" does not exist yet. It is presently in the hidden directory "fluidsynth-1.0.3/src/.libs". It is, in fact, a symbolic link to the Mach-O dynamically linked shared library "libfluidsynth.1.0.0.dylib" which itself is also in the .libs directory. So can I just simply "mv fluidsynth-1.0.3/src/.libs/libfluidsynth.1.dylib /sw/lib/libfluidsynth.1.dylib" ? Then, run "/sw/bin/seg_addr -update -o /sw/var/lib/fink/prebound/seg_addr_table" ??? (I don't want to screw up any OS parameters.) If this is okay, then I could re-make.

In addition, it looks like MidiShare is also not linked properly (see ranlib command above). This may also lead to problems in building fluidsynth??

Many thanks.
Ebrahim






reply via email to

[Prev in Thread] Current Thread [Next in Thread]