Results 1 to 7 of 7

Thread: Undefined reference to dlopen, dlsym, dlerror, dlclose

  1. #1
    Join Date
    May 2006
    Beans
    209

    Undefined reference to dlopen, dlsym, dlerror, dlclose

    I'm trying to compile mjpg-streamer from sources, but I'm getting these errors:
    Code:
    pasqoo@5742zg:~/mjpg-streamer/mjpg-streamer$ make USE_LIBV4L2=true clean all
    make -C plugins/input_uvc clean
    make[1]: ingresso nella directory "/home/pasqoo/mjpg-streamer/mjpg-streamer/plugins/input_uvc"
    rm -f *.a *.o core *~ *.so *.lo
    make[1]: uscita dalla directory "/home/pasqoo/mjpg-streamer/mjpg-streamer/plugins/input_uvc"
    make -C plugins/input_testpicture clean
    make[1]: ingresso nella directory "/home/pasqoo/mjpg-streamer/mjpg-streamer/plugins/input_testpicture"
    rm -f *.a *.o core *~ *.so *.lo
    make[1]: uscita dalla directory "/home/pasqoo/mjpg-streamer/mjpg-streamer/plugins/input_testpicture"
    make -C plugins/output_file clean
    make[1]: ingresso nella directory "/home/pasqoo/mjpg-streamer/mjpg-streamer/plugins/output_file"
    rm -f *.a *.o core *~ *.so *.lo
    make[1]: uscita dalla directory "/home/pasqoo/mjpg-streamer/mjpg-streamer/plugins/output_file"
    make -C plugins/output_http clean
    make[1]: ingresso nella directory "/home/pasqoo/mjpg-streamer/mjpg-streamer/plugins/output_http"
    rm -f *.a *.o core *~ *.so *.lo
    make[1]: uscita dalla directory "/home/pasqoo/mjpg-streamer/mjpg-streamer/plugins/output_http"
    make -C plugins/output_udp clean
    make[1]: ingresso nella directory "/home/pasqoo/mjpg-streamer/mjpg-streamer/plugins/output_udp"
    rm -f *.a *.o core *~ *.so *.lo
    make[1]: uscita dalla directory "/home/pasqoo/mjpg-streamer/mjpg-streamer/plugins/output_udp"
    make -C plugins/output_autofocus clean
    make[1]: ingresso nella directory "/home/pasqoo/mjpg-streamer/mjpg-streamer/plugins/output_autofocus"
    rm -f *.a *.o core *~ *.so *.lo
    make[1]: uscita dalla directory "/home/pasqoo/mjpg-streamer/mjpg-streamer/plugins/output_autofocus"
    make -C plugins/input_gspcav1 clean
    make[1]: ingresso nella directory "/home/pasqoo/mjpg-streamer/mjpg-streamer/plugins/input_gspcav1"
    rm -f *.a *.o core *~ *.so *.lo
    make[1]: uscita dalla directory "/home/pasqoo/mjpg-streamer/mjpg-streamer/plugins/input_gspcav1"
    make -C plugins/output_viewer clean
    make[1]: ingresso nella directory "/home/pasqoo/mjpg-streamer/mjpg-streamer/plugins/output_viewer"
    rm -f *.a *.o core *~ *.so *.lo
    make[1]: uscita dalla directory "/home/pasqoo/mjpg-streamer/mjpg-streamer/plugins/output_viewer"
    make -C plugins/input_control clean
    make[1]: ingresso nella directory "/home/pasqoo/mjpg-streamer/mjpg-streamer/plugins/input_control"
    rm -f *.a *.o core *~ *.so *.lo
    make[1]: uscita dalla directory "/home/pasqoo/mjpg-streamer/mjpg-streamer/plugins/input_control"
    make -C plugins/output_rtsp clean
    make[1]: ingresso nella directory "/home/pasqoo/mjpg-streamer/mjpg-streamer/plugins/output_rtsp"
    rm -f *.a *.o core *~ *.so *.lo
    make[1]: uscita dalla directory "/home/pasqoo/mjpg-streamer/mjpg-streamer/plugins/output_rtsp"
    rm -f *.a *.o mjpg_streamer core *~ *.so *.lo
    gcc -D'SVN_REV="3:148"' -O2 -DLINUX -D_GNU_SOURCE -Wall    -c -o mjpg_streamer.o mjpg_streamer.c
    gcc -D'SVN_REV="3:148"' -O2 -DLINUX -D_GNU_SOURCE -Wall    -c -o utils.o utils.c
    gcc -D'SVN_REV="3:148"' -O2 -DLINUX -D_GNU_SOURCE -Wall  -lpthread -ldl mjpg_streamer.o utils.o -o mjpg_streamer
    mjpg_streamer.o: In function `signal_handler':
    mjpg_streamer.c:(.text+0x17f): undefined reference to `dlclose'
    mjpg_streamer.c:(.text+0x1af): undefined reference to `dlclose'
    mjpg_streamer.o: In function `main':
    mjpg_streamer.c:(.text.startup+0x260): undefined reference to `dlopen'
    mjpg_streamer.c:(.text.startup+0x27c): undefined reference to `dlsym'
    mjpg_streamer.c:(.text.startup+0x299): undefined reference to `dlsym'
    mjpg_streamer.c:(.text.startup+0x2b6): undefined reference to `dlsym'
    mjpg_streamer.c:(.text.startup+0x2d3): undefined reference to `dlsym'
    mjpg_streamer.c:(.text.startup+0x418): undefined reference to `dlopen'
    mjpg_streamer.c:(.text.startup+0x435): undefined reference to `dlsym'
    mjpg_streamer.c:(.text.startup+0x453): undefined reference to `dlsym'
    mjpg_streamer.c:(.text.startup+0x471): undefined reference to `dlsym'
    mjpg_streamer.c:(.text.startup+0x48f): undefined reference to `dlsym'
    mjpg_streamer.c:(.text.startup+0x6ab): undefined reference to `dlerror'
    mjpg_streamer.c:(.text.startup+0x805): undefined reference to `dlerror'
    mjpg_streamer.c:(.text.startup+0x9e1): undefined reference to `dlerror'
    collect2: ld returned 1 exit status
    make: *** [mjpg_streamer] Errore 1
    pasqoo@5742zg:~/mjpg-streamer/mjpg-streamer$
    libc6 and libc6-dev are installed, I'm on Xubuntu 11.10 64 bit.

    Any help?

    Thanks!

  2. #2
    Join Date
    Sep 2009
    Beans
    1,293

    Re: Undefined reference to dlopen, dlsym, dlerror, dlclose

    You need the libs to be linked after the objects. In the Makefile change,
    Code:
    $(APP_BINARY): mjpg_streamer.c mjpg_streamer.h mjpg_streamer.o utils.c utils.h utils.o
      $(CC) $(CFLAGS) $(LFLAGS) $(OBJECTS) -o $(APP_BINARY)
      chmod 755 $(APP_BINARY)
    to
    Code:
    $(APP_BINARY): mjpg_streamer.c mjpg_streamer.h mjpg_streamer.o utils.c utils.h utils.o
      $(CC) $(CFLAGS) $(OBJECTS) $(LFLAGS) -o $(APP_BINARY)
      chmod 755 $(APP_BINARY)
    [EDIT] This is due to to --as-needed being passed by default to gcc nowadays, theres many unresolved symbol threads in the forum for further explanation
    http://wiki.debian.org/ToolChain/DSO...eededlibraries

  3. #3
    Join Date
    May 2006
    Beans
    209

    Re: Undefined reference to dlopen, dlsym, dlerror, dlclose

    That resolved the problem, thanks.

    But the make still doesn't finish, maybe I should ask to their own forum but I try here:

    Code:
    pasqoo@5742zg:~/mjpg-streamer/mjpg-streamer$ make USE_LIBV4L2=true clean all
    make -C plugins/input_uvc clean
    make[1]: ingresso nella directory "/home/pasqoo/mjpg-streamer/mjpg-streamer/plugins/input_uvc"
    rm -f *.a *.o core *~ *.so *.lo
    make[1]: uscita dalla directory "/home/pasqoo/mjpg-streamer/mjpg-streamer/plugins/input_uvc"
    make -C plugins/input_testpicture clean
    make[1]: ingresso nella directory "/home/pasqoo/mjpg-streamer/mjpg-streamer/plugins/input_testpicture"
    rm -f *.a *.o core *~ *.so *.lo
    make[1]: uscita dalla directory "/home/pasqoo/mjpg-streamer/mjpg-streamer/plugins/input_testpicture"
    make -C plugins/output_file clean
    make[1]: ingresso nella directory "/home/pasqoo/mjpg-streamer/mjpg-streamer/plugins/output_file"
    rm -f *.a *.o core *~ *.so *.lo
    make[1]: uscita dalla directory "/home/pasqoo/mjpg-streamer/mjpg-streamer/plugins/output_file"
    make -C plugins/output_http clean
    make[1]: ingresso nella directory "/home/pasqoo/mjpg-streamer/mjpg-streamer/plugins/output_http"
    rm -f *.a *.o core *~ *.so *.lo
    make[1]: uscita dalla directory "/home/pasqoo/mjpg-streamer/mjpg-streamer/plugins/output_http"
    make -C plugins/output_udp clean
    make[1]: ingresso nella directory "/home/pasqoo/mjpg-streamer/mjpg-streamer/plugins/output_udp"
    rm -f *.a *.o core *~ *.so *.lo
    make[1]: uscita dalla directory "/home/pasqoo/mjpg-streamer/mjpg-streamer/plugins/output_udp"
    make -C plugins/output_autofocus clean
    make[1]: ingresso nella directory "/home/pasqoo/mjpg-streamer/mjpg-streamer/plugins/output_autofocus"
    rm -f *.a *.o core *~ *.so *.lo
    make[1]: uscita dalla directory "/home/pasqoo/mjpg-streamer/mjpg-streamer/plugins/output_autofocus"
    make -C plugins/input_gspcav1 clean
    make[1]: ingresso nella directory "/home/pasqoo/mjpg-streamer/mjpg-streamer/plugins/input_gspcav1"
    rm -f *.a *.o core *~ *.so *.lo
    make[1]: uscita dalla directory "/home/pasqoo/mjpg-streamer/mjpg-streamer/plugins/input_gspcav1"
    make -C plugins/output_viewer clean
    make[1]: ingresso nella directory "/home/pasqoo/mjpg-streamer/mjpg-streamer/plugins/output_viewer"
    rm -f *.a *.o core *~ *.so *.lo
    make[1]: uscita dalla directory "/home/pasqoo/mjpg-streamer/mjpg-streamer/plugins/output_viewer"
    make -C plugins/input_control clean
    make[1]: ingresso nella directory "/home/pasqoo/mjpg-streamer/mjpg-streamer/plugins/input_control"
    rm -f *.a *.o core *~ *.so *.lo
    make[1]: uscita dalla directory "/home/pasqoo/mjpg-streamer/mjpg-streamer/plugins/input_control"
    make -C plugins/output_rtsp clean
    make[1]: ingresso nella directory "/home/pasqoo/mjpg-streamer/mjpg-streamer/plugins/output_rtsp"
    rm -f *.a *.o core *~ *.so *.lo
    make[1]: uscita dalla directory "/home/pasqoo/mjpg-streamer/mjpg-streamer/plugins/output_rtsp"
    rm -f *.a *.o mjpg_streamer core *~ *.so *.lo
    gcc -D'SVN_REV="3:148M"' -O2 -DLINUX -D_GNU_SOURCE -Wall    -c -o mjpg_streamer.o mjpg_streamer.c
    gcc -D'SVN_REV="3:148M"' -O2 -DLINUX -D_GNU_SOURCE -Wall    -c -o utils.o utils.c
    gcc -D'SVN_REV="3:148M"' -O2 -DLINUX -D_GNU_SOURCE -Wall  mjpg_streamer.o utils.o -lpthread -ldl -o mjpg_streamer
    chmod 755 mjpg_streamer
    make -C plugins/input_uvc USE_LIBV4L2=true all
    make[1]: ingresso nella directory "/home/pasqoo/mjpg-streamer/mjpg-streamer/plugins/input_uvc"
    gcc -c -O1 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC -DUSE_LIBV4L2 -o v4l2uvc.lo v4l2uvc.c
    v4l2uvc.c: In function ‘init_videoIn’:
    v4l2uvc.c:88:23: warning: variable ‘currentHeight’ set but not used [-Wunused-but-set-variable]
    v4l2uvc.c:88:9: warning: variable ‘currentWidth’ set but not used [-Wunused-but-set-variable]
    gcc -c -O1 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC -DUSE_LIBV4L2 -o jpeg_utils.lo jpeg_utils.c
    gcc -c -O1 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC -DUSE_LIBV4L2 -o dynctrl.lo dynctrl.c
    gcc -O1 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC -DUSE_LIBV4L2 -lv4l2 -ljpeg -o input_uvc.so input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo
    make[1]: uscita dalla directory "/home/pasqoo/mjpg-streamer/mjpg-streamer/plugins/input_uvc"
    cp plugins/input_uvc/input_uvc.so .
    make -C plugins/output_file all
    make[1]: ingresso nella directory "/home/pasqoo/mjpg-streamer/mjpg-streamer/plugins/output_file"
    gcc -O2 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC -o output_file.so output_file.c
    make[1]: uscita dalla directory "/home/pasqoo/mjpg-streamer/mjpg-streamer/plugins/output_file"
    cp plugins/output_file/output_file.so .
    make -C plugins/output_udp all
    make[1]: ingresso nella directory "/home/pasqoo/mjpg-streamer/mjpg-streamer/plugins/output_udp"
    gcc -O2 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC -o output_udp.so output_udp.c
    make[1]: uscita dalla directory "/home/pasqoo/mjpg-streamer/mjpg-streamer/plugins/output_udp"
    cp plugins/output_udp/output_udp.so .
    make -C plugins/output_http all
    make[1]: ingresso nella directory "/home/pasqoo/mjpg-streamer/mjpg-streamer/plugins/output_http"
    gcc -c -O1 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC -o httpd.lo httpd.c
    gcc -O1 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC -o output_http.so output_http.c httpd.lo
    make[1]: uscita dalla directory "/home/pasqoo/mjpg-streamer/mjpg-streamer/plugins/output_http"
    cp plugins/output_http/output_http.so .
    make -C plugins/input_testpicture all
    make[1]: ingresso nella directory "/home/pasqoo/mjpg-streamer/mjpg-streamer/plugins/input_testpicture"
    convert pictures/960x720_1.jpg -resize 640x480! pictures/640x480_1.jpg
    /bin/sh: convert: not found
    make[1]: *** [pictures/640x480_1.jpg] Errore 127
    make[1]: uscita dalla directory "/home/pasqoo/mjpg-streamer/mjpg-streamer/plugins/input_testpicture"
    make: *** [input_testpicture.so] Errore 2
    pasqoo@5742zg:~/mjpg-streamer/mjpg-streamer$
    It doesn't find /bin/sh? Or what?

  4. #4
    Join Date
    Sep 2009
    Beans
    1,293

    Re: Undefined reference to dlopen, dlsym, dlerror, dlclose

    Compiles fine here, try
    Code:
     $ sudo apt-get install imagemagick
    since then,
    Code:
    $ dpkg -S /usr/bin/convert
    imagemagick: /usr/bin/convert

  5. #5
    Join Date
    May 2006
    Beans
    209

    Re: Undefined reference to dlopen, dlsym, dlerror, dlclose

    Yay now it worked
    How did you find that solution??

    Thanks!

  6. #6
    Join Date
    Apr 2009
    Location
    Germany
    Beans
    2,134
    Distro
    Ubuntu Development Release

    Re: Undefined reference to dlopen, dlsym, dlerror, dlclose

    bin/sh is a red herring, its the thing after the colon it does not find, bin/sh is just the program that tries to find it.
    Code:
    /bin/sh: convert: not found
    the general solution to finding files not installed on your system is apt-file, dpkg -S only checks installed packages:
    Code:
    apt-file search -x  "bin/convert$"
    graphicsmagick-imagemagick-compat: /usr/bin/convert
    imagemagick: /usr/bin/convert
    imagemagick-dbg: /usr/lib/debug/usr/bin/convert
    Last edited by MadCow108; November 3rd, 2011 at 09:55 PM.

  7. #7
    Join Date
    May 2006
    Beans
    209

    Re: Undefined reference to dlopen, dlsym, dlerror, dlclose

    Quote Originally Posted by MadCow108 View Post
    bin/sh is a red herring, its the thing after the colon it does not find, bin/sh is just the program that tries to find it.
    Code:
    /bin/sh: convert: not found
    the general solution to finding files not installed on your system is apt-file, dpkg -S only checks installed packages:
    Code:
    apt-file search -x  "bin/convert$"
    graphicsmagick-imagemagick-compat: /usr/bin/convert
    imagemagick: /usr/bin/convert
    imagemagick-dbg: /usr/lib/debug/usr/bin/convert
    Oh, I see... thanks

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •