[yoshimi] Re: 1.5.5 rc1

  • From: Rob Couto <dbtx11@xxxxxxxxx>
  • To: yoshimi@xxxxxxxxxxxxx
  • Date: Tue, 5 Dec 2017 05:45:20 -0500

Hi again, all...

On 12/4/17, Will Godfrey <willgodfrey@xxxxxxxxxxxxxxx> wrote:

This was the first attempt with build options set for This CPU:

[ 51%]
Building CXX object CMakeFiles/yoshimi.dir/main.cpp.o
Linking CXX
executable yoshimi
/usr/bin/ld:
/usr/lib/i386-linux-gnu/libfltk.a(Fl_Preferences.o): undefined reference
to symbol 'dlopen@@GLIBC_2.1'
//lib/i386-linux-gnu/libdl.so.2: error
adding symbols: DSO missing from command line
collect2: error: ld
returned 1 exit status
CMakeFiles/yoshimi.dir/build.make:2103: recipe
for target 'yoshimi' failed
make[2]: *** [yoshimi] Error
1
CMakeFiles/Makefile2:122: recipe for target
'CMakeFiles/yoshimi.dir/all' failed
make[1]: ***
[CMakeFiles/yoshimi.dir/all] Error 2
Makefile:117: recipe for target
'all' failed
make: *** [all] Error 2

And this the second one with build options set for Core2_X86_64 (which is
what
the processor actually is):

make Linking CXX executable yoshimi
/usr/bin/ld: /usr/lib/i386-linux-gnu/libfltk.a(Fl_Preferences.o):
undefined reference to symbol 'dlopen@@GLIBC_2.1'
//lib/i386-linux-gnu/libdl.so.2: error adding symbols: DSO missing from
command line collect2: error: ld returned 1 exit status
CMakeFiles/yoshimi.dir/build.make:2103: recipe for target 'yoshimi'
failed make[2]: *** [yoshimi] Error 1 CMakeFiles/Makefile2:122: recipe
for target 'CMakeFiles/yoshimi.dir/all' failed make[1]: ***
[CMakeFiles/yoshimi.dir/all] Error 2 Makefile:117: recipe for target
'all' failed make: *** [all] Error 2

So it looks like a linker issue of some sort.

Indeed-- the big knowledge base (StackOverflow) shows this is caused
by not already linking to libdl.so. Before Andrew fixed up some
FreeBSD stuff, "-ldl" was added unconditionally but FreeBSD doesn't
need it, so it gets used now only if we're on Linux and the library
exists. Does anything show up in ccmake under LIBDL_LINUX after
'configure'? Of course they can force it the way I do with pthread
etc: hit 'T' for advanced options in ccmake and add -ldl to
CMAKE_EXE_LINKER_FLAGS. Probably. But cmake already "should" just find
it and add it to the pile of -lstuff. And even if that's oddly
necessary, it only treats one thing, but there's another.

I downloaded antiX-17_386-full and installed Stretch in a VM just to
see. If you know, please indicate which one will be better for
reproducing the problem ;) After apt-getting git and the list of *-dev
packages etc. in the manual, it built just fine-- -ldl was already in,
and LIBDL_LINUX in ccmake is set to /usr/lib/i386-linux-gnu/libdl.so
... the other thing is this: why is it linking to the static library
libfltk.a there? It exists in antiX but not at all on my system which
was never a problem. When I go back into the build directory on antiX,
'grep -rni fltk.a .' returns nothing, so cmake here simply doesn't
care about it, as expected. Are they trying to get a static build? Is
it maybe related to the release & flavor I chose?

HTH and sorry for top-posting a long line X(

-- 
Rob
Yoshimi source code is available from either: 
https://sourceforge.net/projects/yoshimi
Or: https://github.com/Yoshimi/yoshimi
Our list archive is at: https://www.freelists.org/archive/yoshimi
To post, email to yoshimi@xxxxxxxxxxxxx

Other related posts: