• 0
Sign in to follow this  
Bytedruid

KSP 1.3 Broken string substitution, Steam & 64-bit Linux Mint 17

Question

I have been playing through a career game started in KSP 1.2.x   After the 1.3 update, Kerbal names no longer appear in the text.  Instead odd symbols are present which I guess are in the source file and are supposed to be replaced at run-time.  All the Kerbals are now named: 

  "<<1^n>>"

That's not a weird code, that's the name as it appears on screen.  In addition there multiple choice substitutions that appear such as:

  "Ferry <<n:1[/%d]>> <<n:1[a VIP]/tourists]>> safely to <<n:3[destination/destinations/destinations]>><<n:4[./and back./ and back.]>>"

for contract text. 

Looking in KSP.log I see the related error message (long paths have been shortened to $KSP_ROOT):

      [ERR 01:28:04.883] Couldn't open $KSP_ROOT/KSP_Data/Plugins/x86/liblingoona.grammar.kerbal.so, error: /usr/lib/i386-linux-gnu/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by $KSP_ROOT/KSP_Data/Plugins/x86/liblingoona.grammar.kerbal.so)

I gotta say, it's pretty impressive that the game is still playable even when a shared object flat out fails to load.  Nice work Squad!

Two questions:

 *  Does anyone know which version of libstdc++ implements the ABI listed above?

 *  Is there any reason that the 32-bit version of the game should be launching instead of the 64-bit version when both are present? 

I have screen shots if needed, thanks for the help.

 

Share this post


Link to post
Share on other sites

3 answers to this question

Recommended Posts

  • 1

I was advised to upgrade to mint 18 to sort out my lingoony problems. I did and the not-found file was able to be found.

I launch mine right from the directory so If I get the 32 bit version, it means I opened the wrong file.

 

Share this post


Link to post
Share on other sites
  • 0

Hey, thanks for the hint! I had (almost) the same problem on Debian 8; didn't think of looking at the log. I just tried 6.3.0-18 from stretch and it seems to fix the issue, so I guess that version must have whatever is needed.

Share this post


Link to post
Share on other sites
  • 0

 @arctangent: Thank you!

I can confirm that the DLL libstdc++.so.6.0.22 from libstdc++6_6.3.0-18_amd64.deb fixes the issue perfectly on Linux Mint 17.2.

This version of Mint is otherwise problematic: the default libstdc++.so.6 is too old, whereas the one from the ubuntu-toolchain-r PPA (as suggested on StackOverflow as a solution to a similar problem) is too new (libstdc++.so.6.0.23, newer ABI) for KSP 1.3.0.

In case anyone else runs into this problem (and upgrading Mint is not an option for them), instructions:

  • Open your KSP_linux directory in the file manager
  • For 64-bit KSP, download the deb package, for the amd64 architecture, from the Debian site. Link posted by arctangent.
  • Open the downloaded deb package with Archive Manager
  • In Archive Manager, inside the deb package navigate to /usr/lib/x86_64-linux-gnu/
  • Extract libstdc++.so.6.0.22 into your KSP_linux directory
  • Open a terminal in your KSP_linux directory
  • In the terminal, create the symlink, since KSP will look for "libstdc++.so.6":
    ln -s libstdc++.so.6.0.22 libstdc++.so.6

    It is possible to just rename the file to libstdc++.so.6, but this has the advantage of preserving the information about the ABI version in the filename.

  • Create a startup script (run.sh) that tells Linux (technically, the dynamic linker) to prefer this libstdc++.so.6 over the system one when starting KSP:

    #!/bin/bash
    LD_LIBRARY_PATH=. ./KSP.x86_64
    

    Basically, this first tries loading any DLLs (.so) from the current directory before defaulting to the system paths.

  • Set the startup script as executable:

    chmod +x run.sh

     

  • Then, to start KSP, open the KSP_linux directory in the terminal, and execute ./run.sh

 

Final note: a startup script can be useful in other non-standard configurations. For example, my run.sh says

#!/bin/bash
LD_LIBRARY_PATH=. __GL_THREADED_OPTIMIZATIONS=0 primusrun ./KSP.x86_64

which runs the game through primusrun (to run the graphics on the NVIDIA GPU). I'm not sure if __GL_THREADED_OPTIMIZATIONS=0 is needed any more, but I've left it in just in case :)

 

 

Share this post


Link to post
Share on other sites
This thread is quite old. Please consider starting a new thread rather than reviving this one.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this