Jump to content


Photo

GLIBCXX relocation error


  • Please log in to reply
21 replies to this topic

#1 McGriffin

McGriffin

    Newbie

  • Member
  • Pip
  • 6 posts

Posted 28 August 2018 - 11:28 AM

Hi there,
first of all,
sorry for my bad english,
my first lang. is german.

I'm new to the game +
i don't know so ! much about linux & gaming

I'm on
System:    Host-Kernel: 4.4.0-133-generic x86_64 (64 bit) Desktop: KDE Plasma 4.14.2
                Distro: Linux Mint 17.3 Rosa
Machine: System: Dell product: OptiPlex 755
                Mobo: Dell model: 0GM819 Bios: Dell v: A22 date: 06/11/2012
CPU:        Quad core Intel Xeon X3380 (-HT-MCP-) cache: 6144 KB
                clock speeds: max: 3166 MHz 1: 2333 MHz 2: 2000 MHz 3: 2000 MHz 4: 2000 MHz
Graphics: Card: NVIDIA Device 1c82
                Display Server: X.Org 1.15.1 drivers: nvidia (unloaded: fbdev,vesa,nouveau)
                Resolution: 1920x1080@60.0hz, 1920x1080@60.0hz
                GLX Renderer: GeForce GTX 1050 Ti/PCIe/SSE2 GLX Version: 4.5.0 NVIDIA 384.130
Audio:      Card-1 NVIDIA Device 0fb9 driver: snd_hda_intel Sound: ALSA v: k4.4.0-133-generic
                Card-2 C-Media CMI8788 [Oxygen HD Audio] driver: snd_virtuoso
                Card-3 Intel 82801I (ICH9 Family) HD Audio Controller driver: snd_hda_intel

I did this:
http://wiki.thedarkm...nux.2C_manually
+
a workaround for the libstdc++.so.6.
I found on the net

the output of
strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX is
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBCXX_3.4.21
GLIBCXX_3.4.22
GLIBCXX_3.4.23
GLIBCXX_3.4.24
GLIBCXX_3.4.25
GLIBCXX_DEBUG_MESSAGE_LENGTH

because of not enough space I'm on an external path with the game (-s)
so after this i did tdm_update.linux
& it ran just fine


if I try to lounge TDM...
no ! matter if ./thedarkmod.x86 or ./thedarkmod.x64...
the output is:
relocation error: /my/path/to/darkmod/thedarkmod.x86 or .x64:
symbol _ZTVNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEE, version GLIBCXX_3.4.21 not defined in file libstdc++.so.6 with link time reference

anyone any ideas how to handle this ?

please help

thank you


Edited by McGriffin, 28 August 2018 - 11:46 AM.


#2 Aldo

Aldo

    Newbie

  • Member
  • Pip
  • 8 posts

Posted 28 August 2018 - 10:01 PM

Hi everyone. I am receiving a similar error to McGriffin:

 

./thedarkmod.x86: relocation error: ./thedarkmod.x86: symbol _ZTVNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEE, version GLIBCXX_3.4.21 not defined in file libstdc++.so.6 with link time reference

 

 

OS: Ubuntu 14.04 LTS 64 bit

CPU: AMD A6-6400K APU with Radeon™ HD Graphics × 2

GPU: Gallium 0.4 on AMD CAPE VERDE



#3 freyk

freyk

    Advanced Member

  • Member
  • PipPipPip
  • 683 posts

Posted 29 August 2018 - 11:34 AM

Im not an expert on this,
so i googled the error: "version GLIBCXX_3.4.21 not defined in file libstdc++.so.6"
There a more people having this problem, outside TDM. And they found some solutions.

Please let us know what the solution is.

Edited by freyk, 29 August 2018 - 11:36 AM.


#4 McGriffin

McGriffin

    Newbie

  • Member
  • Pip
  • 6 posts

Posted 30 August 2018 - 03:14 AM

Thank you frey for helping my me ;)

It seems like no solution outside TDM,
which optional,
or possibly self-recognizing setting options for the compatibility of the intervening system should bring.


Just like I like it from the results,
as a result of this topic:
https://github.com/t...mment-280662005,

(libstdc ++ 6 & GCC 5.1)
read out,
there were changes,
(Https://www.gnu.org/software/gcc/gcc-5/changes.html)
the two options to choose from.

Who saw it,
I use plasma 4 (as a desktop)
to set up a new system
with without this,
or to start fumbling ...
not even talking about
because of a game!
is absolutely no! option
... for me!

So there is only a gcc-downgrade as an option.

Let's take a look ...

https://packages.deb...eywords=gcc-5.1

https://packages.deb...?keywords=gcc-5

https://packages.debian.org/sid/gcc-5

The intsallation of the package,
which is on the last link to download,
would result
my system would be deficient,
because now another version,
with less! Features are available,
what kind of tools means death.

And this,
although TDM already ran with 5.1
and just a patch would have to be provided
which avoids this madness.

Really off topic

did you read that comment?

"P.S. funny thing, _ZNSt7__cxx11: CXX11, but we do not really read error messages."

The problem is always understanding!

Linux has taught me a lot about systems.
... about political ...
hierarchy,
the financial sector (HJR192),
the nutritional area,
the environment area,
the religious,
especially the christian area
WHAT IS THE motu proprio?

What are bankruptcy jurisdictions?



What happened in 2012… by OPPT


Be aware of it
who you are
and what you are

What does it mean ?
A human is one.
You have a natural person
A PERSON you get unimplemented
...to be !

did you contradict that?

What are trust relationships?
Are you…
Are you someone who is familiar?

DO you TRUST ?


I hope not.
Because yours is the kingdom of heaven !!!

respective Johannes 4:4



and peace be upon you

regards



#5 Aldo

Aldo

    Newbie

  • Member
  • Pip
  • 8 posts

Posted 30 August 2018 - 03:45 PM

Yes, the dependencies can drive you crazy.

 

The moto proprio is a way of keeping the fantasy alive by giving infallible power to a group of chumps that are hanging desperately onto some fairy tales from the past.

 

sudo ppa-purge ppa:ubuntu-toolchain-r/test 
 
Results in:
 
./thedarkmod.x86.
/thedarkmod.x86: /usr/lib32/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by ./thedarkmod.x86)
./thedarkmod.x86: /usr/lib32/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by ./thedarkmod.x86)
./thedarkmod.x86: /usr/lib32/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by ./thedarkmod.x86)
./thedarkmod.x86: /usr/lib32/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by ./thedarkmod.x86)
 
Hopefully someone comes up with a simple solution.
 
Cheers


#6 McGriffin

McGriffin

    Newbie

  • Member
  • Pip
  • 6 posts

Posted 31 August 2018 - 05:42 AM

The moto proprio is a way of keeping the fantasy alive by giving infallible power to a group of chumps that are hanging desperately onto some fairy tales from the past.

it's the opposite

they had...

just be sovereign the sovereign

|_|]
prosito

 


#7 Springheel

Springheel

    Creative Director (retired)

  • Admin
  • 37378 posts

Posted 31 August 2018 - 01:57 PM

Really off topic

 

 

Let's keep the off topic stuff in the appropriate forum.


TDM Missions:   A Score to Settle   *   A Reputation to Uphold   *   A New Job   *    A Matter of Hours
 
Video Series:   Springheel's Modules   *   Speedbuild Challenge   *   New Mappers Workshop  *   Building Traps

#8 Aldo

Aldo

    Newbie

  • Member
  • Pip
  • 8 posts

Posted 31 August 2018 - 04:04 PM

Yes, sorry Springheel I thought it was funny. Love your work man. Its been a while since I've been able to get darkmod 2.06 running, am starting to miss it.  I was wondering if it is possible to build an older version on linux?

 

* I've found a backed up old version of 2.05 and copied it across and am also able to use darkradiant again. 


Edited by Aldo, 31 August 2018 - 06:14 PM.


#9 stgatilov

stgatilov

    Lead Programmer

  • Active Developer
  • PipPipPip
  • 1024 posts

Posted 01 September 2018 - 01:10 PM

Ok, here is how it works.

 

GCC broke ABI of C++ standard library for std::string and std::list.

This is perhaps the only known case when they did so, and they had to do so to adhere to new C++11 standard.

While breaking ABI by default, they allowed to return back to the old ABI if wanted (in exchange for not being C++11-compliant).

 

TDM 2.06 binaries were compiled with C++11 with the new C++11 ABI.

If you have old version of C++ standard library (it is something like glibc or glibcxx or libstdc++), then you cannot run these binaries.

The only way to run the new binary is to get newer version of C++ standard libs somehow and make sure TDM uses them.

I have no idea if it is possible to install it in Ubuntu 14.04 and if it is allowed/forbidden to have many versions of it at once in Linux.

 

Alternative solution is to rebuild TDM from source code.

In order to build with old C++ ABI, you have to add the following line:

  BASECPPFLAGS.append( '-D_GLIBCXX_USE_CXX11_ABI=0' )

into SConstruct file at source code root directory, and then build according to wiki instructions.

The resulting binary would be compatible with old C++ libraries, so you will be able to run it.

 

Now there are two questions:

1) Are you OK with compiling TDM from source, or should I compile tdm 2.06 for you?

2) Should we switch to old ABI in SVN, so that TDM 2.07 could be run on Ubuntu 14.04?

 

The question 2 is mostly for TDM developers I guess.

Given that we try to support Windows XP for one last time in TDM 2.07, it is quite stupid that it is not possible to run it on Ubuntu 14  :laugh:


  • duzenko likes this

#10 duzenko

duzenko

    Advanced Member

  • Active Developer
  • PipPipPip
  • 1623 posts

Posted 01 September 2018 - 02:13 PM

Ok, here is how it works.

 

GCC broke ABI of C++ standard library for std::string and std::list.

This is perhaps the only known case when they did so, and they had to do so to adhere to new C++11 standard.

While breaking ABI by default, they allowed to return back to the old ABI if wanted (in exchange for not being C++11-compliant).

 

TDM 2.06 binaries were compiled with C++11 with the new C++11 ABI.

If you have old version of C++ standard library (it is something like glibc or glibcxx or libstdc++), then you cannot run these binaries.

The only way to run the new binary is to get newer version of C++ standard libs somehow and make sure TDM uses them.

I have no idea if it is possible to install it in Ubuntu 14.04 and if it is allowed/forbidden to have many versions of it at once in Linux.

 

Alternative solution is to rebuild TDM from source code.

In order to build with old C++ ABI, you have to add the following line:

  BASECPPFLAGS.append( '-D_GLIBCXX_USE_CXX11_ABI=0' )

into SConstruct file at source code root directory, and then build according to wiki instructions.

The resulting binary would be compatible with old C++ libraries, so you will be able to run it.

 

Now there are two questions:

1) Are you OK with compiling TDM from source, or should I compile tdm 2.06 for you?

2) Should we switch to old ABI in SVN, so that TDM 2.07 could be run on Ubuntu 14.04?

 

The question 2 is mostly for TDM developers I guess.

Given that we try to support Windows XP for one last time in TDM 2.07, it is quite stupid that it is not possible to run it on Ubuntu 14  :laugh:

How do they work around it with all other Linux C++ software? Do they build it on user's system or ???



#11 Aldo

Aldo

    Newbie

  • Member
  • Pip
  • 8 posts

Posted 01 September 2018 - 04:32 PM

Thank you stgatilov for that explanation, now I know why fiddling around with libstdc++ felt like bashing my head against the wall.  I'll try to compile from source.......



#12 Aldo

Aldo

    Newbie

  • Member
  • Pip
  • 8 posts

Posted 01 September 2018 - 05:19 PM

...I added the BASECPPFLAGS.append line to the construct file and updated gcc and am compiling ...

 



#13 Aldo

Aldo

    Newbie

  • Member
  • Pip
  • 8 posts

Posted 01 September 2018 - 06:04 PM

... and it works!! only TDM 2.06 now runs with a blank screen.

 

* whoops put it in the old tdm 2.05 directory. Works fine in the right directory. Thanks heaps for the help  :D


Edited by Aldo, 01 September 2018 - 06:17 PM.


#14 stgatilov

stgatilov

    Lead Programmer

  • Active Developer
  • PipPipPip
  • 1024 posts

Posted 02 September 2018 - 01:20 AM

Reverted the current SVN to old gcc ABI, so that this issue does not happen with TDM 2.07.

Tracked as #4879.



#15 duzenko

duzenko

    Advanced Member

  • Active Developer
  • PipPipPip
  • 1623 posts

Posted 02 September 2018 - 01:33 AM

Reverted the current SVN to old gcc ABI, so that this issue does not happen with TDM 2.07.
Tracked as #4879.

Will that not break it for newer linux systems?

#16 stgatilov

stgatilov

    Lead Programmer

  • Active Developer
  • PipPipPip
  • 1024 posts

Posted 02 September 2018 - 02:05 AM

Will that not break it for newer linux systems?

No, it will not.

 

The old versions of glibcxx have only the old ABI in it, since they had no idea about the new stuff at that time.

The new versions of glibcxx have both the old and the new ABI in it. So you will be able to run both old and new applications.

 

BTW, the tdm_update 2.06 was/is built against old ABI.

The reason to do so is that it is using boost, and without switching to old ABI I would have to rebuild boost static libs, which I didn't want to.

For the same reason, the main TDM code was also built against old ABI: starting from x64 branch merge and ending at boost removal.

It turns out that I should have kept TDM at old ABI when I removed boost, but I did not see any sense in doing so at that moment.



#17 McGriffin

McGriffin

    Newbie

  • Member
  • Pip
  • 6 posts

Posted 02 September 2018 - 10:04 AM

holy father
or someone else who is willing to leave some relevant information

please give a working link to update / upgrade from ...2.06 to ...2.07

thank you



#18 nbohr1more

nbohr1more

    Darkmod PR, Wordsmith

  • Development Role
  • PipPipPipPipPip
  • 8987 posts

Posted 02 September 2018 - 10:41 AM

2.07 isn't out yet.

 

The FBO beta (AKA 2.07 beta) at moddb is what is publicly available:

 

https://www.moddb.co...tex-buffer-beta

 

Requires 2.06 assets.

 

I'll be updating the package once Shadow Maps stabilize in SVN.


Please visit TDM's IndieDB site and help promote the mod:

http://www.indiedb.c...ds/the-dark-mod

(Yeah, shameless promotion... but traffic is traffic folks...)

#19 Aldo

Aldo

    Newbie

  • Member
  • Pip
  • 8 posts

Posted 02 September 2018 - 05:52 PM

Steps to build TDM 2.06 on ubuntu:

 

1. Follow the Installing TDM manually instructions: http://wiki.thedarkm...nux.2C_manually

 

But install in your home folder /darkmod  instead of /usr/share/games/darkmod

 

2. Download the source code http://www.thedarkmod.com/downloads/ and extract into your home folder /darkmod_src

 

3. Update GCC and G++:

 

sudo apt-get update && sudo apt-get install build-essential software-properties-common -y && sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y && sudo apt-get update && sudo apt-get install gcc-snapshot -y && sudo apt-get update && sudo apt-get install gcc-6 g++-6 -y && sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 60 --slave /usr/bin/g++ g++ /usr/bin/g++-6 && sudo apt-get install gcc-4.8 g++-4.8 -y && sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.8;

 

4. In your file manager go to /darkmod_src directory edit SConstruct and add the line of code as follows:

 

....# C++11 features
BASECPPFLAGS.append( '-std=c++11' )
# maintain this dangerous optimization off at all times
BASECPPFLAGS.append( '-fno-strict-aliasing' )
 
# In order to build with old C++ ABI, you have to add the following line:
BASECPPFLAGS.append( '-D_GLIBCXX_USE_CXX11_ABI=0' )
 
if ( g_os == 'Linux' ):
# gcc 4.x option only - only export what we mean to from the game SO
BASECPPFLAGS.append( '-fvisibility=hidden' )....
 
5. Install prerequisite packages http://wiki.thedarkm...ion_Guide#Linux
 
sudo apt-get install scons //'scons' is currently not installed
sudo apt-get install m4 //'SCons Environment' object has no attribute 'M4'
sudo apt-get install subversion //svnversion: not found
sudo apt-get install mesa-common-dev //no such file: "Gl/gl.h"
sudo apt-get install libxxf86vm-dev //no such file: "X11/extensions/xf86vmode.h"
sudo apt-get install libopenal-dev //no such file: "AL/al.h"
sudo apt-get install libxext-dev //no such file: "X11/extensions/Xext.h"

 

6. Then run the build either:

scons BUILD="release" TARGET_ARCH="x86" .. //on 32-bit OS  
scons BUILD="release" TARGET_ARCH="x64" .. //on 64-bit OS

 

7. This will create a new thedarkmod.x86 or thedarkmod.x64 file in the /darkmod folder, make it executable:

chmod uga+x ./thedarkmod.x64

 

8. Run 

./thedarkmod.x64 


Edited by Aldo, 02 September 2018 - 07:18 PM.


#20 McGriffin

McGriffin

    Newbie

  • Member
  • Pip
  • 6 posts

Posted 03 September 2018 - 02:51 AM

But install in your home folder /darkmod  instead of /usr/share/games/darkmod


what if I cant do it under home folder AND /usr/share/games/... ?

I NEED TO HAVE THAT EXTERNAL PATH
for the sake of clarity,
I repeat that


#21 Aldo

Aldo

    Newbie

  • Member
  • Pip
  • 8 posts

Posted 03 September 2018 - 04:04 PM

Then just put the folder in your external path, you have to have /darkmod and /darkmod-src in the same folder for the build that's all.



#22 McGriffin

McGriffin

    Newbie

  • Member
  • Pip
  • 6 posts

Posted 04 September 2018 - 05:37 AM

Then just put the folder in your external path, you have to have /darkmod and /darkmod-src in the same folder for the build that's all.

a-ha...

relocation error: /my/path/to/darkmod/thedarkmod.x64: symbol _ZTVNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEE, version GLIBCXX_3.4.21 not defined in file libstdc++.so.6 with link time reference
 


Edited by McGriffin, 04 September 2018 - 05:37 AM.





0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users