devel/lprof-devel build fail - libvigraimpex.so undefined reference

Dmitry Marakasov amdmi3 at amdmi3.ru
Wed Mar 13 01:56:37 UTC 2013


* Dmitry Marakasov (amdmi3 at hades.panopticon) wrote:

> > Errors on build:
> > 
> > [100%] Building CXX Object src/CMakefiles/lprof.dir/qrc_lprof.o
> > Linking CXX executable lprof
> > /usr/lib/libvigraimpex.so: undefined reference to 
> > '_ZNKSt5ctypeIcE13_M_widen_initEv at GLIBCXX_3.4.11'
> > *** Error code 1
> > 1 error
> > *** Error Code 2
> > 1 error
> > *** Error Code 2
> > 1 error
> > *** Error code 1
> > 
> > Stop in /usr/ports/graphics/lprof-devel.
> > 
> > Thanks in advance for any help with this
> 
> This really is a result of us sticking with a rotten gcc in the base
> system for so long. And I expect more and more similar breakages to
> follow.
> 
> Here, graphics/vigra uses gcc46 (since r307701) to build, and
> combiled vigra library depends code only present in libstdc++ from
> gcc46 (and not in libstdc++ in our base system).
> 
> To compile lprof, adding USE_GCC=4.6+ to it's Makefile would be enough,
> however it won't run:
> 
> % lprof
> /usr/lib/libstdc++.so.6: version GLIBCXX_3.4.11 required by /usr/local/lib/libvigraimpex.so.4 not found
> 
> To fix that, one needs to add LD_LIBRARY_PATH=/usr/local/lib/gcc46
> into environement. The same thing will be required for all vigra
> consumers.
> 
> If gcc46 is optional for vigra, the problem may be temporary fixed by
> reverting r307701 (fluffy@?), however there will be more and more
> software depending on newer libstdc++, and we need a way to address that
> until all supported FreeBSD releases have switched to clang and new c++
> stack.

Further digging showed that vigra is built with corresponding
-Wl,-rpath=/usr/local/lib/gcc46 which makes it use correct libstdc++.
However, that rpath is removed by cmake on installation:

-- Installing: /usr/local/lib/libvigraimpex.so.4.190
-- Installing: /usr/local/lib/libvigraimpex.so.4
-- Installing: /usr/local/lib/libvigraimpex.so
-- Removed runtime path from "/usr/local/lib/libvigraimpex.so.4.190"

I have a fix for that:

http://www.freebsd.org/cgi/query-pr.cgi?pr=ports/176901

With it, no LD_LIBRARY_PATH will be needed, but USE_GCC=4.6+ will still
be required for ALL ports which depend on graphics/vigra as long as it
has USE_GCC=4.6+ itself.

-- 
Dmitry Marakasov   .   55B5 0596 FF1E 8D84 5F56  9510 D35A 80DD F9D2 F77D
amdmi3 at amdmi3.ru  ..:  jabber: amdmi3 at jabber.ru    http://www.amdmi3.ru


More information about the freebsd-ports mailing list