Opened 11 years ago
Last modified 3 years ago
#42702 reopened defect
libtool drops dylibs at link time
Reported by: | jeremyhu (Jeremy Huddleston Sequoia) | Owned by: | larryv (Lawrence Velázquez) |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | 2.2.1 |
Keywords: | Cc: | cooljeanius (Eric Gallager), stromnov (Andrey Stromnov) | |
Port: | libtool |
Description
VLC fails to build with opencv support because opencv's pkg-config file lists paths to dylibs rather than -l<lib> arguments. This should work just fine, but glibtool doesn't like it. It just drops the dylibs on the floor when creating the command line to envoke:
/opt/local/bin/glibtool --tag=CXX --mode=link /usr/bin/clang++ -pipe -Os -arch x86_64 -stdlib=libc++ -D_INTL_REDIRECT_MACROS -I/opt/local/var/macports/build/_Users_jeremy_src_macports_trunk_dports_multimedia_VLC-devel/VLC-devel/work/VLC-devel-2.1.99/contrib/include -Wall -Wextra -Wsign-compare -Wundef -Wpointer-arith -Wvolatile-register-var -fvisibility=hidden -ffast-math -funroll-loops -fomit-frame-pointer -avoid-version -module -export-symbols-regex ^vlc_entry -shrext .dylib -no-undefined ../../compat/libcompat.la ../../src/libvlccore.la -rpath '/opt/local/lib/vlc/plugins/video_filter' -L/opt/local/lib -Wl,-headerpad_max_install_names -arch x86_64 -Wl,-headerpad_max_install_names -L/opt/local/var/macports/build/_Users_jeremy_src_macports_trunk_dports_multimedia_VLC-devel/VLC-devel/work/VLC-devel-2.1.99/contrib/lib -o libopencv_example_plugin.la libopencv_example_plugin_la-opencv_example.lo /opt/local/lib/libopencv_calib3d.dylib /opt/local/lib/libopencv_contrib.dylib /opt/local/lib/libopencv_core.dylib /opt/local/lib/libopencv_features2d.dylib /opt/local/lib/libopencv_flann.dylib /opt/local/lib/libopencv_gpu.dylib /opt/local/lib/libopencv_highgui.dylib /opt/local/lib/libopencv_imgproc.dylib /opt/local/lib/libopencv_legacy.dylib /opt/local/lib/libopencv_ml.dylib /opt/local/lib/libopencv_nonfree.dylib /opt/local/lib/libopencv_objdetect.dylib /opt/local/lib/libopencv_photo.dylib /opt/local/lib/libopencv_stitching.dylib /opt/local/lib/libopencv_superres.dylib /opt/local/lib/libopencv_ts.a /opt/local/lib/libopencv_video.dylib /opt/local/lib/libopencv_videostab.dylib *** Warning: Linking the shared library libopencv_example_plugin.la against the *** static library /opt/local/lib/libopencv_ts.a is not portable! glibtool: link: rm -fr .libs/libopencv_example_plugin.exp glibtool: link: /usr/bin/nm .libs/libopencv_example_plugin_la-opencv_example.o | sed -n -e 's/^.*[ ]\([BCDEGRST][BCDEGRST]*\)[ ][ ]*_\([_A-Za-z][_A-Za-z0-9]*\)$/\1 _\2 \2/p' | sed '/ __gnu_lto/d' | /usr/bin/sed 's/.* //' | sort | uniq > .libs/libopencv_example_plugin.exp glibtool: link: /usr/bin/grep -E -e "^vlc_entry" ".libs/libopencv_example_plugin.exp" > ".libs/libopencv_example_plugin.expT" glibtool: link: mv -f ".libs/libopencv_example_plugin.expT" ".libs/libopencv_example_plugin.exp" glibtool: link: sed -e 's,^,_,' < .libs/libopencv_example_plugin.exp > .libs/libopencv_example_plugin-symbols.expsym glibtool: link: /usr/bin/clang++ -o .libs/libopencv_example_plugin.dylib -bundle .libs/libopencv_example_plugin_la-opencv_example.o ../../compat/.libs/libcompat.a -L/opt/local/lib -L/opt/local/var/macports/build/_Users_jeremy_src_macports_trunk_dports_multimedia_VLC-devel/VLC-devel/work/VLC-devel-2.1.99/contrib/lib ../../src/.libs/libvlccore.dylib -lintl -lidn -liconv -lm /opt/local/lib/libopencv_ts.a -Os -arch x86_64 -stdlib=libc++ -Wl,-headerpad_max_install_names -arch x86_64 -Wl,-headerpad_max_install_names -Wl,-exported_symbols_list,.libs/libopencv_example_plugin-symbols.expsym Undefined symbols for architecture x86_64: "_cvClearMemStorage", referenced from: Filter(filter_t*, picture_t*) in libopencv_example_plugin_la-opencv_example.o "_cvCreateMemStorage", referenced from: OpenFilter(vlc_object_t*) in libopencv_example_plugin_la-opencv_example.o "_cvGetSeqElem", referenced from: Filter(filter_t*, picture_t*) in libopencv_example_plugin_la-opencv_example.o "_cvHaarDetectObjects", referenced from: Filter(filter_t*, picture_t*) in libopencv_example_plugin_la-opencv_example.o "_cvLoad", referenced from: OpenFilter(vlc_object_t*) in libopencv_example_plugin_la-opencv_example.o "_cvRectangle", referenced from: Filter(filter_t*, picture_t*) in libopencv_example_plugin_la-opencv_example.o "_cvReleaseHaarClassifierCascade", referenced from: CloseFilter(vlc_object_t*) in libopencv_example_plugin_la-opencv_example.o "_cvReleaseMemStorage", referenced from: CloseFilter(vlc_object_t*) in libopencv_example_plugin_la-opencv_example.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)
Change History (10)
comment:1 Changed 11 years ago by cooljeanius (Eric Gallager)
Cc: | egall@… added |
---|
comment:2 follow-up: 5 Changed 11 years ago by skymoo (Adam Mercer)
Cc: | stromnov@… added |
---|---|
Port: | opencv added |
That sounds like a problem with opencv's pkg-config file, surely it should specify the link flags needed to link the library, which libtool then passes these onto the compiler, not the path to the libraries?
comment:3 follow-up: 4 Changed 11 years ago by stromnov (Andrey Stromnov)
Probably fixed by jeremyhu at r117530.
My system:
$ port installed opencv The following ports are currently installed: opencv @2.4.8_2+eigen+java+opencl+python27+qt4 (active)
and
$ cat /opt/local/lib/pkgconfig/opencv.pc # Package Information for pkg-config prefix=/opt/local exec_prefix=${prefix} libdir= includedir_old=${prefix}/include/opencv includedir_new=${prefix}/include Name: OpenCV Description: Open Source Computer Vision Library Version: 2.4.8 Libs: -L${exec_prefix}/lib -lopencv_calib3d -lopencv_contrib -lopencv_core -lopencv_features2d -lopencv_flann -lopencv_gpu -lopencv_highgui -lopencv_imgproc -lopencv_legacy -lopencv_ml -lopencv_nonfree -lopencv_objdetect -lopencv_ocl -lopencv_photo -lopencv_stitching -lopencv_superres -lopencv_ts -lopencv_video -lopencv_videostab Cflags: -I${includedir_old} -I${includedir_new}
comment:4 Changed 11 years ago by jeremyhu (Jeremy Huddleston Sequoia)
Replying to stromnov@…:
Probably fixed by jeremyhu at r117530.
No, that was a workaround in opencv.
This is a bug in glibtool.
comment:5 Changed 11 years ago by jeremyhu (Jeremy Huddleston Sequoia)
Replying to ram@…:
That sounds like a problem with opencv's pkg-config file, surely it should specify the link flags needed to link the library, which libtool then passes these onto the compiler, not the path to the libraries?
No, it's not a bug in opencv as I already explained. You can clearly see in the command line that the linker flags *ARE* being passed to glibtoo, and glibtool is not passing them on to the linker.
comment:6 Changed 11 years ago by jeremyhu (Jeremy Huddleston Sequoia)
Port: | webkit-gtk opencv removed |
---|
comment:7 Changed 11 years ago by skymoo (Adam Mercer)
Owner: | changed from ram@… to macports-tickets@… |
---|
comment:8 Changed 7 years ago by ryandesign (Ryan Carsten Schmidt)
Owner: | changed from macports-tickets@… to larryv |
---|---|
Port: | libtool added; glibtool removed |
Status: | new → assigned |
Summary: | glibtool drops dylibs at link time → libtool drops dylibs at link time |
comment:9 Changed 3 years ago by michaelld (Michael Dickens)
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
Given now old this ticket is, I'm guessing it's been "fixed" by newer releases ... for example libtool is at 2.4.7 & I'm updating it to 2.4.8 ; opencv (2) has been replaced by opencv3 ... I'm going to close this ticket as "fixed" ... but if someone can show otherwise then please reopen and post info as to what's still going on.
comment:10 Changed 3 years ago by jmroot (Joshua Root)
Resolution: | fixed |
---|---|
Status: | closed → reopened |
No sign of a fix for this in the commits since 2.4.6. Of course if it hasn't been reported upstream, it should be.
Cc Me!