Gaussian problem with inkscape 0.48
![](https://secure.gravatar.com/avatar/27d5fb4f8bdf834f022d029d3140a2df.jpg?s=120&d=mm&r=g)
I have tried the .gz download, the .bz2 download, and even the bazaar version. 0.47 configures and compiles with no problem. All versions of 0.48 blow up at the same spot: -------------------------------------------- libinkscape.a(nr-filter-gaussian.o): In function `_ZN8Inkscape7FiltersL12filter2D_FIRIhLj4EEEvPT_iiPKS2_iiiiPKNS_4Util10FixedPointIjLj16EEEii.omp_fn.5': /usr/local/inkscape/src/display/nr-filter-gaussian.cpp:371: undefined reference to `void Inkscape::Filters::filter2D_FIR<unsigned char, 4u>(unsigned char*, int, int, unsigned char const*, int, int, int, int, Inkscape::Util::FixedPoint<unsigned int, 16u> const*, int, int)::C.639' libinkscape.a(nr-filter-gaussian.o): In function `_ZN8Inkscape7FiltersL12filter2D_FIRIhLj3EEEvPT_iiPKS2_iiiiPKNS_4Util10FixedPointIjLj16EEEii.omp_fn.4': /usr/local/inkscape/src/display/nr-filter-gaussian.cpp:371: undefined reference to `void Inkscape::Filters::filter2D_FIR<unsigned char, 3u>(unsigned char*, int, int, unsigned char const*, int, int, int, int, Inkscape::Util::FixedPoint<unsigned int, 16u> const*, int, int)::C.622' collect2: ld returned 1 exit status make[3]: *** [inkscape] Error 1 make[2]: *** [all] Error 2 make[1]: *** [all-recursive] Error 1 make: *** [all] Error 2 ----------------------------------------------------------------------- I use Linux Slackware 13.0. I have posted several times on the user mail list but no useful hints are forthcoming. My gcc is version 4.3.3.
Anyone have a clue what my problem is?
![](https://secure.gravatar.com/avatar/b47d036b8f12e712f4960ba78404c3b2.jpg?s=120&d=mm&r=g)
2010/9/1 John Culleton <john@...1202...>:
I have tried the .gz download, the .bz2 download, and even the bazaar version. 0.47 configures and compiles with no problem. All versions of 0.48 blow up at the same spot:
libinkscape.a(nr-filter-gaussian.o): In function `_ZN8Inkscape7FiltersL12filter2D_FIRIhLj4EEEvPT_iiPKS2_iiiiPKNS_4Util10FixedPointIjLj16EEEii.omp_fn.5': /usr/local/inkscape/src/display/nr-filter-gaussian.cpp:371: undefined reference to `void Inkscape::Filters::filter2D_FIR<unsigned char, 4u>(unsigned char*, int, int, unsigned char const*, int, int, int, int, Inkscape::Util::FixedPoint<unsigned int, 16u> const*, int, int)::C.639' libinkscape.a(nr-filter-gaussian.o): In function `_ZN8Inkscape7FiltersL12filter2D_FIRIhLj3EEEvPT_iiPKS2_iiiiPKNS_4Util10FixedPointIjLj16EEEii.omp_fn.4': /usr/local/inkscape/src/display/nr-filter-gaussian.cpp:371: undefined reference to `void Inkscape::Filters::filter2D_FIR<unsigned char, 3u>(unsigned char*, int, int, unsigned char const*, int, int, int, int, Inkscape::Util::FixedPoint<unsigned int, 16u> const*, int, int)::C.622' collect2: ld returned 1 exit status make[3]: *** [inkscape] Error 1 make[2]: *** [all] Error 2 make[1]: *** [all-recursive] Error 1 make: *** [all] Error 2
I use Linux Slackware 13.0. I have posted several times on the user mail list but no useful hints are forthcoming. My gcc is version 4.3.3.
It appears to be a bug in GCC's implementation of OpenMP. The linker can't find functions referenced from OpenMP-generated code. That's because the qualifiers on one of the function parameters are incorrect. The error message mentions: Inkscape::Util::FixedPoint<unsigned int, 16u> const* The correct type of this parameter is: Inkscape::Util::FixedPoint<unsigned int, 16u> const* const
You could try manually changing line 353 of src/display/nr-filter-gaussian.cpp from: int const n1, int const n2, FIRValue const *const kernel, int const scr_len, int const num_threads) to: int const n1, int const n2, FIRValue const *kernel, int const scr_len, int const num_threads) See if that allows the linking to complete. If it does, we might incorporate this workaround into 0.48.1.
Regards, Krzysztof
participants (2)
-
John Culleton
-
Krzysztof Kosiński