Public bug reported:

Binary package hint: ia32-libs

This bug is present in Ubuntu 9.04 ("Jaunty Jackalope") on amd64 in
ia32-libs 2.7ubuntu4 or lib32stdc++6 4.3.3-5ubuntu4.

ia32-libs contains a libstdc++.so symbolic link for 32-bit C++
development.  The symbolic link points to libstdc++.so.5.  A 32-bit
libstdc++.so.6 is installed as well, by virtue of ia32-libs' dependency
on lib32stdc++6.

m...@ebony bash$ ls -l /usr/lib32/libstdc++.so*
lrwxrwxrwx 1 root root     14 2009-04-12 20:36 /usr/lib32/libstdc++.so -> 
libstdc++.so.5
lrwxrwxrwx 1 root root     18 2009-04-12 20:36 /usr/lib32/libstdc++.so.5 -> 
libstdc++.so.5.0.7
-rw-r--r-- 1 root root 737192 2008-05-10 02:18 /usr/lib32/libstdc++.so.5.0.7
lrwxrwxrwx 1 root root     19 2009-04-12 20:36 /usr/lib32/libstdc++.so.6 -> 
libstdc++.so.6.0.10
-rw-r--r-- 1 root root 950424 2009-03-16 21:03 /usr/lib32/libstdc++.so.6.0.10

However, the installed C++ headers are from libstdc++6.
libstdc++6-4.3-dev is installed.  These headers expect to be linked
against libstdc++6, and are incompatible with libstdc++5.

Simple C++ compilations fail.  For example, although it is possible to
build the attached test.cc in 64-bit mode, a 32-bit compilation fails:

m...@ebony bash$ g++ -m32 test.cc -o test
/tmp/cc0c9S5e.o: In function `std::_Rb_tree_const_iterator<std::pair<char 
const* const, int> >::operator--()':
test.cc:(.text._ZNSt23_Rb_tree_const_iteratorISt4pairIKPKciEEmmEv[std::_Rb_tree_const_iterator<std::pair<char
 const* const, int> >::operator--()]+0xf): undefined reference to 
`std::_Rb_tree_decrement(std::_Rb_tree_node_base const*)'
[...]
/tmp/cc0c9S5e.o: In function `std::_Rb_tree_iterator<std::pair<char const* 
const, int> >::operator++()':
test.cc:(.text._ZNSt17_Rb_tree_iteratorISt4pairIKPKciEEppEv[std::_Rb_tree_iterator<std::pair<char
 const* const, int> >::operator++()]+0xf): undefined reference to 
`std::_Rb_tree_increment(std::_Rb_tree_node_base*)'
collect2: ld returned 1 exit status

The libstdc++ headers are expecting these requirements to be satisfied
by libstdc++6, but since the /usr/lib32/libstdc++.so symbolic link
points to the incompatible libstdc++5, the link results in unresolved
symbols.

A symbolic link from /usr/lib/gcc/x86_64-linux-gnu/4.3/32/libstdc++.so
should be pointed at ../../../../../lib32/libstdc++.so.6.  This mimics
the symbolic link placed by libstdc++6-4.3-dev in /usr/lib/gcc/x86_64
-linux-gnu/4.3.  This symbolic link should be provided by the
lib32stdc++6.  Placing this symbolic link manually allows the above C++
compilation to succeed without incident.

At the same time, the symbolic link at /usr/lib32/libstdc++.so should be
removed from ia32-libs.  No C++ development should take place using
libstdc++5 on this system, whose installed headers expect libstdc++6.

** Affects: ia32-libs (Ubuntu)
     Importance: Undecided
         Status: New


** Tags: amd64 jaunty

-- 
libstdc++.so link in amd64 ia32-libs is wrong
https://bugs.launchpad.net/bugs/360870
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to