libstdc++.so link in amd64 ia32-libs is wrong
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
ia32-libs (Ubuntu) |
Fix Released
|
Medium
|
Fabien Tassin | ||
Jaunty |
Fix Released
|
Medium
|
Fabien Tassin |
Bug Description
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.
mark@ebony bash$ ls -l /usr/lib32/
lrwxrwxrwx 1 root root 14 2009-04-12 20:36 /usr/lib32/
lrwxrwxrwx 1 root root 18 2009-04-12 20:36 /usr/lib32/
-rw-r--r-- 1 root root 737192 2008-05-10 02:18 /usr/lib32/
lrwxrwxrwx 1 root root 19 2009-04-12 20:36 /usr/lib32/
-rw-r--r-- 1 root root 950424 2009-03-16 21:03 /usr/lib32/
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:
mark@ebony bash$ g++ -m32 test.cc -o test
/tmp/cc0c9S5e.o: In function `std::_
test.cc:
[...]
/tmp/cc0c9S5e.o: In function `std::_
test.cc:
collect2: ld returned 1 exit status
The libstdc++ headers are expecting these requirements to be satisfied by libstdc++6, but since the /usr/lib32/
A symbolic link from /usr/lib/
At the same time, the symbolic link at /usr/lib32/
Changed in ia32-libs (Ubuntu Jaunty): | |
assignee: | nobody → Fabien Tassin (fta) |
importance: | Undecided → Low |
milestone: | none → ubuntu-9.04 |
status: | New → In Progress |
ia32-libs shouldnt have a libstdc++ link at all.
its shipped by:
g++-4.3-multilib: /usr/lib/ gcc/x86_ 64-linux- gnu/4.3/ 32/libstdc+ +.so
So please drop the libstdc++ links altogether to fix this bug.