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