Summary: | 4.5.0 produces missing symbols (std::_List_node_base::_M_hook ...) | ||
---|---|---|---|
Product: | gcc | Reporter: | Yuri <yuri> |
Component: | c++ | Assignee: | Not yet assigned to anyone <unassigned> |
Status: | RESOLVED INVALID | ||
Severity: | major | CC: | gcc-bugs |
Priority: | P3 | ||
Version: | unknown | ||
Target Milestone: | --- | ||
Host: | Target: | ||
Build: | Known to work: | ||
Known to fail: | Last reconfirmed: |
Description
Yuri
2010-04-25 00:22:57 UTC
Thus the symbols are there, and exported (ie, capital T), everything seems fine to me. But linker produces messages like this: x.C:229: undefined reference to `std::_List_node_base::_M_hook(std::_List_node_base*)' New with the switch to 4.5.0 Thus, either the linker is buggy, or the installation. Note, those symbols are new in 4.5.0, thus you should check that your new 4.5.0 *.so is actually searched by linker, ie, check the installation, again, because if the linker tries to link vs the 4.4.x *.so the symbols will not be found. Sorry, my bad. It really was picking up the default libstdc++.so from the OS installation. I used -R/path/to/4.5.0/libstdc++.so to fix this library path. But it turns out that -L/path/to/4.5.0/libstdc++.so is also required in addition to this, otherwise the default libstdc++.so is looked up by linker. Maybe this is a bug in linker, don't know. But those new symbols revealed the problem. Ok, thanks, let's close this then. (In reply to comment #5) > > It really was picking up the default libstdc++.so from the OS installation. I > used -R/path/to/4.5.0/libstdc++.so to fix this library path. But it turns out > that -L/path/to/4.5.0/libstdc++.so is also required in addition to this, > otherwise the default libstdc++.so is looked up by linker. > > Maybe this is a bug in linker, don't know. No, that's the expected behaviour |