It seems that you're using an outdated browser. Some things may not work as they should (or don't work at all).
We suggest you upgrade newer and better browser like: Chrome, Firefox, Internet Explorer or Opera

×
Hi, since the official way of doing this is installing the 32-bit version of libsdl2-2.0.0 and other libraries, and Ubuntu doesn't allow to do this without breaking some things, I came up with an horrible way, but at least it works. Bad news: it needs Steam.

Go to ~/GOG Games/Crimsonland, backup the original start.sh and make a new one with the following content:

cd game
LD_LIBRARY_PATH=~/.local/share/Steam/ubuntu12_32:~/.local/share/Steam/ubuntu12_32/steam-runtime/i386/lib/i386- linux-gnu:~/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu:. ./crimsonland

Don't forget to chmod 755 start.sh
Until there's a better way to import libraries and make them coexist peacefully, this will do it.
You don't need "libsdl2-2.0.0", you need libsdl2:i386 in your system.

For very rear case of needing exact library version, you just download it somewhere and put it next to binary.

You are doing something wrong.
Post edited March 12, 2016 by Lin545
This is what I do wrong: I rely entirely on APT to get libraries, and I'm too lazy to search libraries one by one and copy them in the binary dir, especially if I already have them in another application.

By the way, the game does need libsdl2-2.0.0:i386, it even complains about MD5 check failing if you try to "force" another one.
$ apt-cache showpkg libsdl2-2.0.0
Package: libsdl2-2.0-0
Versions:
2.0.2+dfsg1-6 (/var/lib/apt/lists/ftp.debian.org_debian_dists_jessie_main_binary-amd64_Packages) (/var/lib/dpkg/status)
Description Language:
File: /var/lib/apt/lists/ftp.debian.org_debian_dists_jessie_main_binary-amd64_Packages
MD5: 615d29e77a181220b3a0986d7afcf705

Reverse Depends:
kodi-bin,libsdl2-2.0-0 2.0.0
qmc2-mame,libsdl2-2.0-0 2.0.0
mame-tools,libsdl2-2.0-0 2.0.0
mame,libsdl2-2.0-0 2.0.0
kodi-bin,libsdl2-2.0-0 2.0.0
supertux,libsdl2-2.0-0 2.0.0
stella,libsdl2-2.0-0 2.0.0
kodi-bin,libsdl2-2.0-0 2.0.0
fs-uae,libsdl2-2.0-0 2.0.0
freeorion,libsdl2-2.0-0 2.0.0
endless-sky,libsdl2-2.0-0 2.0.0
0ad,libsdl2-2.0-0 2.0.0
libsdl2-2.0-0:i386,libsdl2-2.0-0 2.0.2+dfsg1-6
libsdl2-2.0-0:i386,libsdl2-2.0-0 2.0.2+dfsg1-6
yamagi-quake2,libsdl2-2.0-0 2.0.0
libgemrb,libsdl2-2.0-0 2.0.0
stella,libsdl2-2.0-0 2.0.0
spring,libsdl2-2.0-0 2.0.0
performous,libsdl2-2.0-0 2.0.0
neverputt,libsdl2-2.0-0 2.0.0
neverball,libsdl2-2.0-0 2.0.0
nestopia,libsdl2-2.0-0 2.0.0
mupen64plus-video-z64,libsdl2-2.0-0 2.0.0
mupen64plus-video-rice,libsdl2-2.0-0 2.0.0
mupen64plus-video-glide64mk2,libsdl2-2.0-0 2.0.0
mupen64plus-ui-console,libsdl2-2.0-0 2.0.0
mupen64plus-input-sdl,libsdl2-2.0-0 2.0.0
libmupen64plus2,libsdl2-2.0-0 2.0.0
mupen64plus-audio-sdl,libsdl2-2.0-0 2.0.0
mpv,libsdl2-2.0-0 2.0.0
libmpv1,libsdl2-2.0-0 2.0.0
love,libsdl2-2.0-0 2.0.0
logstalgia,libsdl2-2.0-0 2.0.0
libsdl2-ttf-2.0-0,libsdl2-2.0-0 2.0.0
libsdl2-net-2.0-0,libsdl2-2.0-0 2.0.0
libsdl2-mixer-2.0-0,libsdl2-2.0-0 2.0.0
libsdl2-image-2.0-0,libsdl2-2.0-0 2.0.0
libsdl2-gfx-1.0-0,libsdl2-2.0-0 2.0.0
libsdl2-dev,libsdl2-2.0-0 2.0.2+dfsg1-6
libsdl2-dbg,libsdl2-2.0-0 2.0.2+dfsg1-6
libgrooveplayer4,libsdl2-2.0-0 2.0.0
libguvcview-1.0-0,libsdl2-2.0-0 2.0.0
gource,libsdl2-2.0-0 2.0.0
blobby-server,libsdl2-2.0-0 2.0.0
blobby,libsdl2-2.0-0 2.0.0
Dependencies:
2.0.2+dfsg1-6 - libasound2 (2 1.0.16) libc6 (2 2.15) libpulse0 (2 0.99.1) libwayland-client0 (2 1.3.92) libwayland-cursor0 (2 1.0.2) libwayland-egl1-mesa (18 10.0.2) libwayland-egl1 (0 (null)) libx11-6 (2 2:1.2.99.901) libxcursor1 (4 1.1.2) libxext6 (0 (null)) libxi6 (2 2:1.2.99.4) libxinerama1 (0 (null)) libxkbcommon0 (2 0.2.0) libxrandr2 (2 2:1.2.0) libxss1 (0 (null)) libxxf86vm1 (0 (null)) multiarch-support (0 (null)) libsdl-1.3-0 (0 (null)) libsdl-1.3-0:i386 (0 (null)) libsdl-1.3-0 (0 (null)) libsdl-1.3-0:i386 (0 (null)) libsdl2-2.0-0:i386 (3 2.0.2+dfsg1-6) libsdl2-2.0-0:i386 (6 2.0.2+dfsg1-6)
Provides:
2.0.2+dfsg1-6 -
Reverse Provides:

Libsdl2 is even available for xenial.


Thats the only static libraries which I leave in game lib folder.

http://imgur.com/LDof8lJ
Post edited March 13, 2016 by Lin545
^^^^ Wrong search above (I still need 64bit libsdl because I also run 64bit KSP)

Thats correct one:
$ apt-cache showpkg libsdl2-2.0.0:i386
Package: libsdl2-2.0-0:i386
Versions:
2.0.2+dfsg1-6 (/var/lib/apt/lists/ftp.debian.org_debian_dists_jessie_main_binary-i386_Packages) (/var/lib/dpkg/status)
Description Language:
File: /var/lib/apt/lists/ftp.debian.org_debian_dists_jessie_main_binary-amd64_Packages
MD5: 615d29e77a181220b3a0986d7afcf705


Reverse Depends:
kodi-bin:i386,libsdl2-2.0-0:i386 2.0.0
mame-tools:i386,libsdl2-2.0-0:i386 2.0.0
mame:i386,libsdl2-2.0-0:i386 2.0.0
kodi-bin:i386,libsdl2-2.0-0:i386 2.0.0
gpac-modules-base:i386,libsdl2-2.0-0:i386 2.0.0
audacious-plugins:i386,libsdl2-2.0-0:i386 2.0.0
supertux:i386,libsdl2-2.0-0:i386 2.0.0
stella:i386,libsdl2-2.0-0:i386 2.0.0
kodi-bin:i386,libsdl2-2.0-0:i386 2.0.0
fs-uae:i386,libsdl2-2.0-0:i386 2.0.0
freeorion:i386,libsdl2-2.0-0:i386 2.0.0
endless-sky:i386,libsdl2-2.0-0:i386 2.0.0
0ad:i386,libsdl2-2.0-0:i386 2.0.0
yamagi-quake2:i386,libsdl2-2.0-0:i386 2.0.0
libgemrb:i386,libsdl2-2.0-0:i386 2.0.0
stella:i386,libsdl2-2.0-0:i386 2.0.0
spring:i386,libsdl2-2.0-0:i386 2.0.0
performous:i386,libsdl2-2.0-0:i386 2.0.0
neverputt:i386,libsdl2-2.0-0:i386 2.0.0
neverball:i386,libsdl2-2.0-0:i386 2.0.0
nestopia:i386,libsdl2-2.0-0:i386 2.0.0
mupen64plus-video-z64:i386,libsdl2-2.0-0:i386 2.0.0
mupen64plus-video-rice:i386,libsdl2-2.0-0:i386 2.0.0
mupen64plus-video-glide64mk2:i386,libsdl2-2.0-0:i386 2.0.0
mupen64plus-ui-console:i386,libsdl2-2.0-0:i386 2.0.0
mupen64plus-input-sdl:i386,libsdl2-2.0-0:i386 2.0.0
libmupen64plus2:i386,libsdl2-2.0-0:i386 2.0.0
mupen64plus-audio-sdl:i386,libsdl2-2.0-0:i386 2.0.0
mpv:i386,libsdl2-2.0-0:i386 2.0.0
libmpv1:i386,libsdl2-2.0-0:i386 2.0.0
love:i386,libsdl2-2.0-0:i386 2.0.0
logstalgia:i386,libsdl2-2.0-0:i386 2.0.0
libsdl2-ttf-2.0-0:i386,libsdl2-2.0-0:i386 2.0.0
libsdl2-net-2.0-0:i386,libsdl2-2.0-0:i386 2.0.0
libsdl2-mixer-2.0-0:i386,libsdl2-2.0-0:i386 2.0.0
libsdl2-image-2.0-0:i386,libsdl2-2.0-0:i386 2.0.0
libsdl2-gfx-1.0-0:i386,libsdl2-2.0-0:i386 2.0.0
libsdl2-dev:i386,libsdl2-2.0-0:i386 2.0.2+dfsg1-6
libsdl2-dbg:i386,libsdl2-2.0-0:i386 2.0.2+dfsg1-6
libsdl2-2.0-0,libsdl2-2.0-0:i386 2.0.2+dfsg1-6
libsdl2-2.0-0,libsdl2-2.0-0:i386 2.0.2+dfsg1-6
libgrooveplayer4:i386,libsdl2-2.0-0:i386 2.0.0
libguvcview-1.0-0:i386,libsdl2-2.0-0:i386 2.0.0
gource:i386,libsdl2-2.0-0:i386 2.0.0
blobby-server:i386,libsdl2-2.0-0:i386 2.0.0
blobby:i386,libsdl2-2.0-0:i386 2.0.0
Dependencies:
2.0.2+dfsg1-6 - libasound2:i386 (2 1.0.16) libc6:i386 (2 2.15) libpulse0:i386 (2 0.99.1) libwayland-client0:i386 (2 1.3.92) libwayland-cursor0:i386 (2 1.0.2) libwayland-egl1-mesa:i386 (18 10.0.2) libwayland-egl1:i386 (0 (null)) libx11-6:i386 (2 2:1.2.99.901) libxcursor1:i386 (4 1.1.2) libxext6:i386 (0 (null)) libxi6:i386 (2 2:1.2.99.4) libxinerama1:i386 (0 (null)) libxkbcommon0:i386 (2 0.2.0) libxrandr2:i386 (2 2:1.2.0) libxss1:i386 (0 (null)) libxxf86vm1:i386 (0 (null)) multiarch-support:i386 (0 (null)) libsdl-1.3-0 (0 (null)) libsdl-1.3-0:i386 (0 (null)) libsdl-1.3-0 (0 (null)) libsdl-1.3-0:i386 (0 (null)) libsdl2-2.0-0 (3 2.0.2+dfsg1-6) libsdl2-2.0-0 (6 2.0.2+dfsg1-6)
Provides:
2.0.2+dfsg1-6 -
Reverse Provides:
avatar
Protocultor: Hi, since the official way of doing this is installing the 32-bit version of libsdl2-2.0.0 and other libraries, and Ubuntu doesn't allow to do this without breaking some things...
See here, Mint 17 is directly based on trusty.
Post edited March 13, 2016 by Gydion
avatar
Lin545: $ apt-cache showpkg libsdl2-2.0.0:i386
Package: libsdl2-2.0-0:i386
Versions:
2.0.2+dfsg1-6 (/var/lib/apt/lists/ftp.debian.org_debian_dists_jessie_main_binary-i386_Packages) (/var/lib/dpkg/status)
Description Language:
File: /var/lib/apt/lists/ftp.debian.org_debian_dists_jessie_main_binary-amd64_Packages
MD5: 615d29e77a181220b3a0986d7afcf705
...
I know it's available, now try to install it.

$ sudo apt-get -f install libsdl2-2.0.0:i386
[sudo] password for xxx:
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help resolve the situation:

The following packages have unmet dependencies:

libsdl2-2.0-0:i386 : Depends: libwayland-egl1-mesa:i386 (>= 10.0.2) or
libwayland-egl1:i386
unity-control-center : Depends: libcheese-gtk23 (>= 3.4.0) but it is not going to be installed
Depends: libcheese7 (>= 3.0.1) but it is not going to be installed

E: Unable to correct problems, you have held broken packages.
avatar
Protocultor: Hi, since the official way of doing this is installing the 32-bit version of libsdl2-2.0.0 and other libraries, and Ubuntu doesn't allow to do this without breaking some things...
avatar
Gydion: See here, Mint 17 is directly based on trusty.
Thanks for the help, but it didn't work.

Also tried multiarch, as described in this post:
http://www.gog.com/forum/the_witcher_2/the_witcher_2_complains_cannot_open_libsdl220so0
...but again, didn't work.
avatar
Protocultor: I know it's available, now try to install it.

(snip)

libsdl2-2.0-0:i386 : Depends: libwayland-egl1-mesa:i386 (>= 10.0.2) or
libwayland-egl1:i386
unity-control-center : Depends: libcheese-gtk23 (>= 3.4.0) but it is not going to be installed
Depends: libcheese7 (>= 3.0.1) but it is not going to be installed

E: Unable to correct problems, you have held broken packages.
Means, apt has two different packages and can't decide which to install in the system - one which depends upon proprietary EGL implementation, another upon mesa (open driver).

first, check what glx subsystem is used:
# update-alternatives --display glx

(if you change gl subsystem, by changing driver packages, whichever is used to provide libgl1-..., selections usually gets updated, so I wouldn't change it from default "auto")

then, if you use open driver (intel, radeon):
# apt-get install libwayland-egl1-mesa:i386

otherwise:
# apt-get install libwayland-egl1:i386

then:
# apt-get install libsdl2-2.0-0:i386

These are some moments, when I prefer Gentoo and Exherbo over APT or Pacman.
You just dictate which components you explicitly want to have in package.use and system resolves this, without manual interaction.

But God, when libpng gets updated, I suddenly back in love with APT ....
Post edited March 14, 2016 by Lin545
avatar
Lin545: Means, apt has two different packages and can't decide which to install in the system - one which depends upon proprietary EGL implementation, another upon mesa (open driver).

first, check what glx subsystem is used:
# update-alternatives --display glx

(if you change gl subsystem, by changing driver packages, whichever is used to provide libgl1-..., selections usually gets updated, so I wouldn't change it from default "auto")
update-alternatives: error: no alternatives for glx.

I don't even know how to change driver packages. I'm using proprietary Nvidia 352.63 driver, installed through system config -> software updates -> additional drivers.
avatar
Lin545: otherwise:
# apt-get install libwayland-egl1:i386
Package libwayland-egl1:i386 is a virtual package provided by:
libwayland-egl1-mesa-lts-wily:i386 11.0.2-1ubuntu4~trusty1
libwayland-egl1-mesa-lts-vivid:i386 10.5.9-2ubuntu1~trusty2
libwayland-egl1-mesa-lts-utopic:i386 10.3.2-0ubuntu1~trusty2
libwayland-egl1-mesa:i386 10.1.3-0ubuntu0.6
You should explicitly select one to install.
avatar
Protocultor: update-alternatives: error: no alternatives for glx.

I don't even know how to change driver packages. I'm using proprietary Nvidia 352.63 driver, installed through system config -> software updates -> additional drivers.


Package libwayland-egl1:i386 is a virtual package provided by:
libwayland-egl1-mesa-lts-wily:i386 11.0.2-1ubuntu4~trusty1
libwayland-egl1-mesa-lts-vivid:i386 10.5.9-2ubuntu1~trusty2
libwayland-egl1-mesa-lts-utopic:i386 10.3.2-0ubuntu1~trusty2
libwayland-egl1-mesa:i386 10.1.3-0ubuntu0.6
You should explicitly select one to install.
Do you even get 3d acceleration?
What does:

$ glxinfo | grep -i end

say?


who links to libgl1.so?
$ ls -al /usr/lib/{i386,x86_64}-linux-gnu/libGL.so.1
avatar
Lin545: Do you even get 3d acceleration?
I can run GRID Autosport with no problems, I guess that counts as "yes" :)
In GOG, I have Satellite Reign, which also works with no issues.

avatar
Lin545: What does:

$ glxinfo | grep -i end

say?
I had to install "mesa-utils" to get glxinfo, but here it goes:

direct rendering: Yes
server glx vendor string: NVIDIA Corporation
client glx vendor string: NVIDIA Corporation
OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: GeForce GTX 760/PCIe/SSE2
GL_ARB_bindless_texture, GL_ARB_blend_func_extended,
GL_ARB_compute_variable_group_size, GL_ARB_conditional_render_inverted,
GL_ARB_draw_buffers_blend, GL_ARB_draw_elements_base_vertex,
GL_EXT_bgra, GL_EXT_bindable_uniform, GL_EXT_blend_color,
GL_EXT_blend_equation_separate, GL_EXT_blend_func_separate,
GL_EXT_blend_minmax, GL_EXT_blend_subtract, GL_EXT_compiled_vertex_array,
GL_IBM_texture_mirrored_repeat, GL_KHR_blend_equation_advanced,
GL_KTX_buffer_region, GL_NVX_conditional_render, GL_NVX_gpu_memory_info,
GL_NV_blend_equation_advanced, GL_NV_blend_square, GL_NV_command_list,
GL_NV_compute_program5, GL_NV_conditional_render,
GL_NV_gpu_program5, GL_NV_gpu_program5_mem_extended,
GL_NV_path_rendering, GL_NV_pixel_data_range, GL_NV_point_sprite,
GL_ARB_bindless_texture, GL_ARB_blend_func_extended,
GL_ARB_compute_variable_group_size, GL_ARB_conditional_render_inverted,
GL_ARB_draw_buffers_blend, GL_ARB_draw_elements_base_vertex,
GL_EXT_bgra, GL_EXT_bindable_uniform, GL_EXT_blend_color,
GL_EXT_blend_equation_separate, GL_EXT_blend_func_separate,
GL_EXT_blend_minmax, GL_EXT_blend_subtract, GL_EXT_compiled_vertex_array,
GL_IBM_texture_mirrored_repeat, GL_KHR_blend_equation_advanced,
GL_KTX_buffer_region, GL_NVX_conditional_render, GL_NVX_gpu_memory_info,
GL_NV_blend_equation_advanced, GL_NV_blend_square, GL_NV_command_list,
GL_NV_compute_program5, GL_NV_conditional_render,
GL_NV_gpu_program5, GL_NV_gpu_program5_mem_extended,
GL_NV_path_rendering, GL_NV_pixel_data_range, GL_NV_point_sprite,

avatar
Lin545: who links to libgl1.so?
$ ls -al /usr/lib/{i386,x86_64}-linux-gnu/libGL.so.1
"No such file or directory" for both /usr/lib/i386-linux-gnu/libGL.so.1 and /usr/lib/x86_64-linux-gnu/libGL.so.1

Best approximation was:

$ sudo ls -al /usr/lib/{i386,x86_64}-linux-gnu/libGL*
ls: cannot access /usr/lib/i386-linux-gnu/libGL*: No such file or directory
lrwxrwxrwx 1 root root 19 mar 6 00:36 /usr/lib/x86_64-linux-gnu/libGLEWmx.so.1.10 -> libGLEWmx.so.1.10.0
-rw-r--r-- 1 root root 497728 ene 2 2014 /usr/lib/x86_64-linux-gnu/libGLEWmx.so.1.10.0
lrwxrwxrwx 1 root root 17 mar 6 00:36 /usr/lib/x86_64-linux-gnu/libGLEW.so.1.10 -> libGLEW.so.1.10.0
-rw-r--r-- 1 root root 555080 ene 2 2014 /usr/lib/x86_64-linux-gnu/libGLEW.so.1.10.0
lrwxrwxrwx 1 root root 15 mar 6 00:36 /usr/lib/x86_64-linux-gnu/libGLU.so.1 -> libGLU.so.1.3.1
-rw-r--r-- 1 root root 449232 oct 21 2013 /usr/lib/x86_64-linux-gnu/libGLU.so.1.3.1
avatar
Protocultor: I can run GRID Autosport with no problems, I guess that counts as "yes" :)
In GOG, I have Satellite Reign, which also works with no issues.
avatar
Protocultor: "No such file or directory" for both /usr/lib/i386-linux-gnu/libGL.so.1 and /usr/lib/x86_64-linux-gnu/libGL.so.1

Best approximation was:

$ sudo ls -al /usr/lib/{i386,x86_64}-linux-gnu/libGL*

ls: cannot access /usr/lib/i386-linux-gnu/libGL*: No such file or directory
lrwxrwxrwx 1 root root 19 mar 6 00:36 /usr/lib/x86_64-linux-gnu/libGLEWmx.so.1.10 -> libGLEWmx.so.1.10.0
-rw-r--r-- 1 root root 497728 ene 2 2014 /usr/lib/x86_64-linux-gnu/libGLEWmx.so.1.10.0
lrwxrwxrwx 1 root root 17 mar 6 00:36 /usr/lib/x86_64-linux-gnu/libGLEW.so.1.10 -> libGLEW.so.1.10.0
-rw-r--r-- 1 root root 555080 ene 2 2014 /usr/lib/x86_64-linux-gnu/libGLEW.so.1.10.0
lrwxrwxrwx 1 root root 15 mar 6 00:36 /usr/lib/x86_64-linux-gnu/libGLU.so.1 -> libGLU.so.1.3.1
-rw-r--r-- 1 root root 449232 oct 21 2013 /usr/lib/x86_64-linux-gnu/libGLU.so.1.3.1
not necessarily, if it runs in software. Although one thing for sure - you are missing i386 OpenGL libraries. You are also potentially missing i386 xlib, libc and libasound, which should be dependency-pulled by libsdl2:i386

Perhaps, nvidia ignores the whole libGL alternative system and preloads its own version instead. The GLEW/GLU libraries are unrelated. Can you please post:

$ more /etc/ld.so.conf.d/*.conf | cat

Especially if you miss i386 nvidia libraries, you can already do two things:
1) check that you have added 32bit architecture to your ubuntu:
# dpkg --add-architecture i386
# apt-get update

If you already have i386 architecture installed, that won't spoil anything.
You need i386 architecture in user-space (on your x86_64 bit kernel & in addition to x86_64 userspace), in order to run i386 applications.
If application is available only in i386 binary, you can't run it on your 86_64 host without i386 userspace (ie pure 86_64 system).

2) after you do that, make sure to re-install nvidia driver. I suggest using native ubuntu nvidia package.
But first you'll have to purge them:
# apt-get remove --purge nvidia*
reboot (into VESA) and then reinstall:
$ apt-cache search nvidia-
some packages like nvidia-331 nvidia-331-updates nvidia-settings
# apt-get install <the nvidia packages>

Thing is, if you had no 32bit arch (pure 64bit) in the time nvidia driver was installed, it could potentially detect absence of 32bit libc and ignore all the libraries. Hence you get no i386 openGL, hence i386 version of libsdl refuses to install. Its just a multi-platform wrapper that looks for typical input(xinput), sound(libasound) and video(libopengl) libraries.
Post edited March 16, 2016 by Lin545
avatar
Protocultor: I can run GRID Autosport with no problems, I guess that counts as "yes" :)
avatar
Lin545: not necessarily, if it runs in software.
Look at some videos of GA on Youtube. You'll know that would be impossible with current gen hardware.

I did all your steps, and other conflicts came up, this time with XOrg. I'm not gonna post anymore, it's too much time wasted in a problem only ONE game gives, and one I've already solved.

avatar
Lin545: Although one thing for sure - you are missing i386 OpenGL libraries. You are also potentially missing i386 xlib, libc and libasound, which should be dependency-pulled by libsdl2:i386

...

Thing is, if you had no 32bit arch (pure 64bit) in the time nvidia driver was installed, it could potentially detect absence of 32bit libc and ignore all the libraries. Hence you get no i386 openGL, hence i386 version of libsdl refuses to install. Its just a multi-platform wrapper that looks for typical input(xinput), sound(libasound) and video(libopengl) libraries.
I believe you are right, but it shows that this way of dealing with libraries sucks. This whole time I've feeling like I'm back to the late '90's, when I was fighting "DLL hell" in Windows; it's the exact same situation, and makes me feel a lot less guilty of my original solution. Now I actually think it's good.

In any case, thanks a lot for the help and the insight on the issue.
avatar
Protocultor: Look at some videos of GA on Youtube. You'll know that would be impossible with current gen hardware.

I did all your steps, and other conflicts came up, this time with XOrg. I'm not gonna post anymore, it's too much time wasted in a problem only ONE game gives, and one I've already solved.
LLVM is very fast, it depends on how intense the title is.

The problem that you have is either mis-labeled package dependencies, or nvidia driver not installing i386 part because i386 (sub-)architecture was not present at time of install.

There are two types of OS:
1: OS that manages whole thing between hardware and application by itself, and
2: OS that exposes everything to the user.

Both windows and linux are mostly type 2, although windows is much more also type 1.

The real type 1 would be console, they don't have such troubles.
The tradeoff, is that they allow customization on the level of ... a refrigerator. Almost none.

avatar
Protocultor: I believe you are right, but it shows that this way of dealing with libraries sucks. This whole time I've feeling like I'm back to the late '90's, when I was fighting "DLL hell" in Windows; it's the exact same situation, and makes me feel a lot less guilty of my original solution. Now I actually think it's good.

In any case, thanks a lot for the help and the insight on the issue.
This has nothing to do with how pre-Vista Windows have dealt with classic DLLs. Even post-Vista way of dealing (WinSxS) still has major problems.


On Linux, the library is dealt pretty decently. If its put near binary (ELF, Windows "exe" equivalent), then local version is executed. If such one is absent, then system looks at $PATH variable and global version is executed.
To solve the versioning, there is a generic name of library - which is only a link, that points to exact library:

libmylibrary.so -> libmylibrary.so.123

on upgrade:
libmylibrary.so -> libmylibrary.so.125
and so on.

The only problem, is when some library is completely cut away from the stack, calling functions that don't exist anymore, so it can't link into kernel infrastucture, which is extremely rare.

Windows DLL hell was something different, with none versioning and libraries overwritting each other, causing segmentation faults due to wrong function names or calling functions from non-existing addresses (when directly calling function by address, because they could have shifted after re-compilation).

libGL is a pretty standard switcher, that points to whichever library handles OpenGL calls - which is usually part of the specific driver. These calls are then sent towards hardware via driver.

Nvidia proprietary driver, mesa (intel, radeon - open driver, nouveau - nvidia inofficial open driver), AMD catalyst proprietary driver - all deliver own version.

In Windows you usually have only one driver for one vendor, from big three x86 GPU manufacturers, only Intel has one driver in Linux; nvidia and amd each have two, both of them have different reasons, history and people behind its development.

I don't see how its DLL-hell-alike.
Post edited March 21, 2016 by Lin545
Can anybody help me out with this? I guess this is probably the same thing as above but with so many posts with commands Im lost.

I got this is in terminal when I try to run Crimsonland:
./start.sh
Running Crimsonland
./crimsonland: error while loading shared libraries: libSDL2-2.0.so.0: cannot open shared object file: No such file or directory

Im on Linux Mint 17.3 Rosa.
Post edited May 17, 2016 by Matruchus