Thanks, David; this worked perfectly. So, here are my updated
instructions for building FluidSynth on 64-bit Ubuntu:
- No need to remove the Ubuntu packages of FluidSynth!
- Build the FluidSynth RC. From the FluidSynth source
directory:
mkdir build
cd build
cmake -DLIB_SUFFIX= ..
make
sudo make install
- Update the library cache:
sudo ldconfig
This works for me. After uninstalling FluidSynth, make sure to
manually delete the libfluidsynth.so and libfluidsynth.so.1
symlinks from /usr/local/lib/ and run sudo ldconfig
again.
-~Chris
On 07/30/2012 04:51 PM, David
Henningsson wrote:
On
07/30/2012 07:41 PM, S. Christian Collins wrote:
On 07/28/2012 11:59 PM, David Henningsson
wrote:
4) Run
sudo make install
...to install the new version. Once you have finished testing,
run
sudo make uninstall
...to revert to the version that comes with Ubuntu.
On my system (Kubuntu 64-bit), this resulted in version 1.1.6 of
the
FluidSynth binary using the 1.1.5 libraries.
Thanks for noticing!
I've tried to sort this stuff out, all this linking can be a bit
hairy :-/
There seem to be two problems here:
1) We install things into /usr/local/lib64 by default, which is
wrong under Debian systems (see
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=612000 )
Workaround:
Run cmake with
"cmake -DLIB_SUFFIX= .."
Note the space between "=" and "..", and that
-DCMAKE_INSTALL_PREFIX=/usr is *not* specified.
This causes the library to be installed into /usr/local/lib.
2) The ld.so.cache is not updated
Workaround:
Run "sudo ldconfig" after "sudo make install" or "sudo make
uninstall" to update the cache.
After that, things seem to be in order:
* "which fluidsynth" returns /usr/local/bin
* "ldd /usr/local/bin/fluidsynth" returns "libfluidsynth.so.1
=> /usr/local/lib/libfluidsynth.so.1"
As for fixing these issues long-term:
1) I'm not aware of the standards of when to use lib or lib64 for
non-Debian systems, but if it's important to install into lib64 in
e g Fedora, maybe we could detect whether our target is Debian
based, and if so, skip the LIB_SUFFIX?
2) I think cmake's make file should call ldconfig after
install/uninstall, so this seems to be a bug in cmake? I think
"libtool finish" does that.
I also had a problem with OSS support
causing
make to abort, so I edited the *CMakeLists.txt* file in the
source
directory by changing line 328 from:
set ( OSS_SUPPORT ${OSS_FOUND} )
...to:
set ( OSS_SUPPORT 0 )
...and then I was able to compile.
Hmm, it seems like we're missing an enable-oss (to go with
enable-alsa, enable-jack etc) to make it easy to leave out.
After testing, you will need to manually
remove the library files you
copied to */usr/lib/x86_64-linux-gnu* and "sudo make uninstall"
from the
FluidSynth build directory should remove the rest. I say
"should"
because it actually leaves the */usr/lib64/libfluidsynth.so* and
*/usr/lib64/libfluidsynth.so.1* symlinks behind, so you will
have to
remove those manually as well.
Yeah, as for cleaning the symlinks, I ran into that as well. Seems
to be another cmake bug?
|