LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Slackware (https://www.linuxquestions.org/questions/slackware-14/)
-   -   Current + Multilib : dlopen errors when compiling (https://www.linuxquestions.org/questions/slackware-14/current-multilib-dlopen-errors-when-compiling-4175609842/)

rvdboom 07-14-2017 05:21 AM

Current + Multilib : dlopen errors when compiling
 
Hi!
I've just upgraded to the latest -current and to AlienBob's latest multilib packages and since then, I have many of my personal compiling scripts (for some mesa packages, ffmpeg, vlc, x264, etc.) failing when linking like this :

Quote:

make[3]*: on entre dans le répertoire «*/usr/src/git/vlc/src*»
CCLD libvlccore.la
posix/.libs/plugin.o: In function `module_Load':
plugin.c:(.text+0x1b): undefined reference to `dlopen'
plugin.c:(.text+0x30): undefined reference to `dlerror'
posix/.libs/plugin.o: In function `module_Unload':
plugin.c:(.text+0x81): undefined reference to `dlclose'
posix/.libs/plugin.o: In function `module_Lookup':
plugin.c:(.text+0x91): undefined reference to `dlsym'
collect2: error: ld returned 1 exit status
make[3]: *** [Makefile:2315: libvlccore.la] Error 1
make[3]*: on quitte le répertoire «*/usr/src/git/vlc/src*»
make[2]: *** [Makefile:1877: all] Error 2
make[2]*: on quitte le répertoire «*/usr/src/git/vlc/src*»
make[1]: *** [Makefile:2276: all-recursive] Error 1
make[1]*: on quitte le répertoire «*/usr/src/git/vlc*»
make: *** [Makefile:2161: all] Error 2
The weird think is that not all do. fmmpeg-git or x64-git did build, but not vlc-git or mesa-git. I don't build x264 statically in ffmpeg, so I would guess sometimes dlopen does seem to work.
Googling around, many pages provide some insight like using LDLIBS='-ldl' to force adding this at the end of the gcc line, but to no avail yet.
I really don't know how to investigate this so if anyone has a suggestion, please let me know.

RadicalDreamer 07-14-2017 09:12 AM

What version of ffmpeg, mesa, and vlc are you using? It looks like dlopen has something to do with libdl (dunno which package its from).

I am running current + multilib. I built vlc with: https://slackbuilds.org/repository/14.2/multimedia/vlc/ and I'm using a tricked out Official Slackware ffmpeg Slackbuild with the latest source package for Current. The Current package for mesa. The result:
Code:

Done building package for vlc.
Built package: vlc-20170523_bec643e-x86_64-1_SBo.tgz

+++++++++++++++++++++++++++++++++++++++++++
SUMMARY LOG
Using the SBo master git branch
Queue Process:  Download and build

vlc:
  MD5SUM check for vlc-20170523_bec643e.tar.xz ... OK
  Building package vlc-20170523_bec643e-x86_64-1_SBo.tgz ... OK

Do you have qt5 installed?

rvdboom 07-14-2017 09:32 AM

Thanks for the reply.
libdl is brought by glibc, it's the library providing the way to dynamically open libraries. It's one of the fundamental libraries, I guess.
I'm compiling git pulls of the various packages. The whole system works, so I guess dlopening at large is functionnal in my system, it's just that compilation of the some of my git packages fails.
This is apparently an error with the way the gcc link command is written, the -ldl parameter should be given at the end of the command. But with the latest gits, the whole command line is usually hidden and I don't know how to force the build system to display them in order to see what's going on. using the LDLIBS paramater at configure time is supposed to help with that but not for me.

55020 07-14-2017 10:11 AM

Quote:

Originally Posted by rvdboom (Post 5734844)
But with the latest gits, the whole command line is usually hidden and I don't know how to force the build system to display them in order to see what's going on.

For autotools and the Linux kernel

Code:

export VERBOSE=1
For cmake

Code:

export V=1
Edit: Or maybe the other way round :rolleyes:

rvdboom 07-14-2017 11:21 AM

Thanks, I'll try that.
I have the problem though and it was of course a mistake of mine somehow. For some reason, the upgrade of my glibc packages did not go completely through, many libraries remained in a /lib64/incoming packages. AlienBob explained to me that indeed the glibc libraries are first installed in this dir then moved to the proper /lib64 location bi the doinst.sh script.
I've resintalled the glic packages and everything is fine now.
Thanks for those who took the time to answer!


All times are GMT -5. The time now is 11:37 AM.