libopencv_features2d link failure on ARM with undefined references to cv::SIFT (Bug #910)


Added by Koen Kooi about 14 years ago. Updated almost 14 years ago.


Status:Done Start date:
Priority:High Due date:
Assignee:Ethan Rublee % Done:

0%

Category:features2d
Target version:-
Affected version: Operating System:
Difficulty: HW Platform:
Pull request:

Description

When compiling for ARM (both cross and native), the test apps and external apps fail with:

| ../../lib/libopencv_features2d.so.2.2.0: undefined reference to @cv::SIFT::SIFT' | ../../lib/libopencv_features2d.so.2.2.0: undefined reference to @cv::SIFT::operator()(cv::Mat const&, cv::Mat const&, std::vector<cv::KeyPoint, std::allocator<cv::KeyPoint> >&, cv::Mat&, bool) const' | ../../lib/libopencv_features2d.so.2.2.0: undefined reference to @cv::SIFT::SIFT' | ../../lib/libopencv_features2d.so.2.2.0: undefined reference to @cv::SIFT::CommonParams::CommonParams()' | ../../lib/libopencv_features2d.so.2.2.0: undefined reference to @cv::SIFT::operator()(cv::Mat const&, cv::Mat const&, std::vector<cv::KeyPoint, std::allocator<cv::KeyPoint> >&) const' | ../../lib/libopencv_features2d.so.2.2.0: undefined reference to @cv::SIFT::DescriptorParams::DescriptorParams()' | ../../lib/libopencv_features2d.so.2.2.0: undefined reference to @cv::SIFT::DetectorParams::DetectorParams()' | collect2: ld returned 1 exit status

This is with r4462 of the '2.2' branch. gcc 4.3.3, binutils 2.18.50 with ' -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp' as target CFLAGS

2.1 doesn't have this problem, trunk for a few weeks ago had the same problem


0001-SIFT-unbreak-non-android-ARM-builds.patch - This seems to work for me (790 Bytes) Koen Kooi, 2011-02-22 11:00 am


Associated revisions

Revision 6c2cdb67
Added by Ethan Rublee almost 14 years ago

Applying fix described in ticket #910. sift was not being built for arm...

Revision b8902747
Added by Roman Donchenko almost 12 years ago

Merge pull request #910 from pengx17:2.4_oclgfft

Revision bae85660
Added by Roman Donchenko almost 12 years ago

Merge remote-tracking branch 'origin/2.4'

Pull requests:
#943 from jet47:cuda-5.5-support
#944 from jet47:cmake-2.8.11-cuda-fix
#912 from SpecLad:contributing
#934 from SpecLad:parallel-for
#931 from jet47:gpu-test-fixes
#932 from bitwangyaoyao:2.4_fixBFM
#918 from bitwangyaoyao:2.4_samples
#924 from pengx17:2.4_arithm_fix
#925 from pengx17:2.4_canny_tmp_fix
#927 from bitwangyaoyao:2.4_perf
#930 from pengx17:2.4_haar_ext
#928 from apavlenko:bugfix_3027
#920 from asmorkalov:android_move
#910 from pengx17:2.4_oclgfft
#913 from janm399:2.4
#916 from bitwangyaoyao:2.4_fixPyrLK
#919 from abidrahmank:2.4
#923 from pengx17:2.4_macfix

Conflicts:
modules/calib3d/src/stereobm.cpp
modules/features2d/src/detectors.cpp
modules/gpu/src/error.cpp
modules/gpu/src/precomp.hpp
modules/imgproc/src/distransform.cpp
modules/imgproc/src/morph.cpp
modules/ocl/include/opencv2/ocl/ocl.hpp
modules/ocl/perf/perf_color.cpp
modules/ocl/perf/perf_imgproc.cpp
modules/ocl/perf/perf_match_template.cpp
modules/ocl/perf/precomp.cpp
modules/ocl/perf/precomp.hpp
modules/ocl/src/arithm.cpp
modules/ocl/src/canny.cpp
modules/ocl/src/filtering.cpp
modules/ocl/src/haar.cpp
modules/ocl/src/hog.cpp
modules/ocl/src/imgproc.cpp
modules/ocl/src/opencl/haarobjectdetect.cl
modules/ocl/src/pyrlk.cpp
modules/video/src/bgfg_gaussmix2.cpp
modules/video/src/lkpyramid.cpp
platforms/linux/scripts/cmake_arm_gnueabi_hardfp.sh
platforms/linux/scripts/cmake_arm_gnueabi_softfp.sh
platforms/scripts/ABI_compat_generator.py
samples/ocl/facedetect.cpp

History

Updated by Koen Kooi about 14 years ago

I get the feeling that:

opencv/modules/features2d/src/sift.cpp:
#ifdef arm
#define ARM_NO_SIFT
#endif

isn't working as you guys think it works

Updated by Koen Kooi about 14 years ago

ping

Updated by Koen Kooi about 14 years ago

ping again

Updated by Koen Kooi about 14 years ago

Any movement on this bug?

Updated by Koen Kooi about 14 years ago

and ping again

Updated by Koen Kooi about 14 years ago

I wonder why I bother to post patches here.....

Updated by Koen Kooi about 14 years ago

and another ping, this is getting tedious

Updated by Koen Kooi about 14 years ago

let's see if reassigning helps to move this bug along

  • Status deleted (Open)

Updated by Brian Gerkey about 14 years ago

Thanks for posting the patch. It fixed my build of https://code.ros.org/svn/opencv/branches/2.2/opencv@r4462 on a SheevaPlug.

Updated by Ethan Rublee about 14 years ago

So I hesitate to apply the patch, as I'm not sure the reason for the original non support for ARM with SIFT. It appears to not effect compilation on android, and that is why there is an android special case in there. Let's ask Vadim, and see why.

Also I noticed #772 mentions this #ifdef. Maybe its a completely unnecessary relic from the past.

Updated by Koen Kooi about 14 years ago

ping

Updated by Koen Kooi almost 14 years ago

ping

Updated by Koen Kooi almost 14 years ago

Ethan, could you please have a look at this again as Vadim is obviously ignoring trac tickets? This is a simple fix to make non-android ARM builds work again. It doesn't even impact android/arm since that's covered with the extra #ifdefs in the code and in the Cmakefiles. The reason non-android ARM is broken is due to the CMakefiles not being updated.

With my Texas Instruments hat on, openCV 2.2 is an integral part of the SDK we are going to release for our Integra line of chips and right now we can't ship it since upstream is broken. The way that is broken is also making this works, since openCV 2.2 builds fine, but you can't link anything to it since the SIFT symbols are not really there.

With my opensource hat on, I know reviewing patches is dull, but this is a 4 line change, confirmed to work by Gerkey (thanks!). Does it really need more than 3 weeks to give at least a "I'm looking at it" response?

Updated by Ethan Rublee almost 14 years ago

koenkooi, I will fix this right now at the risk of it breaking something else. It looks fine to me.

Updated by Ethan Rublee almost 14 years ago

Fixed in the 2.2 branch in r4812 and trunk in r4813. Please ping back if it works for you.

Updated by Koen Kooi almost 14 years ago

I tested 2.2/4812 and that builds and works, thanks!

  • Status set to Done
  • (deleted custom field) set to fixed

Also available in: Atom PDF