Dwarf Fortress Bug Tracker - Dwarf Fortress |
View Issue Details |
|
ID | Project | Category | View Status | Date Submitted | Last Update |
0009893 | Dwarf Fortress | Technical -- General | public | 2016-07-07 09:45 | 2017-11-01 09:54 |
|
Reporter | Khym Chanur | |
Assigned To | lethosor | |
Priority | normal | Severity | crash | Reproducibility | always |
Status | acknowledged | Resolution | open | |
Platform | AMD x86_64 | OS | Linux | OS Version | Fedora 24 |
Product Version | 0.43.05 | |
Target Version | | Fixed in Version | | |
|
Summary | 0009893: Linux: libs/libstdc++.so.6 causing linking problem |
Description | Trying to run the newly 64 bit DF under Linux (Fedora 24), I get the following errors:
./libs/Dwarf_Fortress: /home/matt/temp/df_linux/libs/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /lib64/libGLU.so.1)
./libs/Dwarf_Fortress: /home/matt/temp/df_linux/libs/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /lib64/libGLU.so.1)
|
Steps To Reproduce | |
Additional Information | Simply removing libstdc++.so.6 from the libs directory fixes the problem, as the Dwarf_Fortress executable will link just fine against the system's standard libstdc++.so library |
Tags | No tags attached. |
Relationships | has duplicate | 0011635 | resolved | lethosor | DF can't be launched at all | has duplicate | 0011681 | resolved | lethosor | libs/libstdc++.so.6 causing linking problem | has duplicate | 0011895 | resolved | lethosor | missing CXXABI_1.3.9 | related to | 0009894 | resolved | lethosor | Linux 64 bit: libs/libgcc_s.so.1 no longer needed |
|
Attached Files | |
|
Issue History |
Date Modified | Username | Field | Change |
2016-07-07 09:45 | Khym Chanur | New Issue | |
2016-07-07 13:08 | ShimmerFairy | Note Added: 0035570 | |
2016-07-07 16:23 | lethosor | Note Added: 0035571 | |
2016-07-07 16:23 | lethosor | Assigned To | => lethosor |
2016-07-07 16:23 | lethosor | Status | new => acknowledged |
2016-07-07 16:25 | lethosor | Relationship added | related to 0009894 |
2016-07-07 21:29 | Khym Chanur | Note Added: 0035576 | |
2016-07-07 21:46 | ShimmerFairy | Note Added: 0035577 | |
2016-07-07 21:48 | ShimmerFairy | Note Edited: 0035577 | bug_revision_view_page.php?bugnote_id=0035577#r14358 |
2016-07-08 08:32 | Khym Chanur | Note Added: 0035579 | |
2016-07-12 18:05 | Khym Chanur | Note Added: 0035613 | |
2020-10-12 15:39 | lethosor | Relationship added | has duplicate 0011635 |
2021-01-31 21:47 | lethosor | Relationship added | has duplicate 0011681 |
2022-07-29 19:54 | lethosor | Relationship added | has duplicate 0011895 |
Notes |
|
|
At first glance, I'd guess a problem involving the ABI changes in gcc 5.0, or maybe the changes in 6.0 (e.g. defaulting to gnu++14 instead of gnu++98), depending on what version your system libraries are compiled on and what DF's libstdc++ is for. |
|
|
|
Toady's using GCC 4.8 on Linux. It looks like /lib64/libGLU.so.1 requires a libstdc++ from GCC 4.9 or 5.1, going by https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html. [^]
Removing the libstdc++ will break compatibility completely for people whose systems don't distribute GCC 4.8, so I don't know if there's much that can be done here. |
|
|
|
Maybe the df script could check what version of libstdc++ is installed, and depending upon the version set or not set the environmental variable LD_LIBRARY_PATH to "."; of course, that would require removing the "Library rpath = [$ORIGIN]" trick from the executable.
For the record, my install is using version 6.1.1-3 of GCC and libstdc++, and the path of the system libstdc++ library is /lib64/libstdc++.so.6.0.22 |
|
|
(0035577)
|
ShimmerFairy
|
2016-07-07 21:46
(edited on: 2016-07-07 21:48) |
|
The weird thing is that I removed the provided libstdc++ as well, and I've been able to run it fine without problems. my libGLU.so.1 points to libGLU.so.1.3.1, which is provided by gentoo's media-libs/glu-9.0.0-r1. My currently active gcc is gcc-5.4.0, which was probably what I used to compile that.
Edit: I believe I also ran this without deleting the provided libstdc++ at first as well. (I definitely ran the 64-bit testing version without ever deleting the library.)
|
|
|
|
Oops, wait, Dwarf_Fortress still needs the libgraphics.so library which is in the same directory. So, to amend my suggestion, libstdc++.so.6 and libgcc_s.so.1 could be moved to the new directory libs/c_libs, and if the df script decides they're needed it would set LD_LIBRARY_PATH to "./c_libs". |
|
|
|
Here's the start of a fix for the problem: http://pastebin.com/jX4Wf062 [^]
It will detect when the system libstdc++ can be linked or not. If it can't be, then it links against the bundled version which is put into libs/c_lib. It needs to be updated with all the versions of libstdc++ which can be linked against. |
|