Sys_LoadDll(/opt/cod1/main/game.mp.i386.so) failed:
"libstdc++.so.5: cannot open shared object file"
Sys_LoadDll(game) failed dlopen()
Cause
The engine loads its gameplay logic from a separate shared object (game.mp.i386.so on
Linux). The failure message usually names the real reason on the line above.
The three real causes:
- Missing 32-bit libraries. The message quotes the missing library — that is a libstdc++.so.5 problem, not a game problem.
- The module is missing. It ships inside the patch. A base install patched incorrectly can end up without it.
- Patch mismatch. The engine binary and
game.mp.i386.socome from different patch levels.
Fix
Read the quoted reason first. If it names a library, install the i386 runtime:
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install -y libc6:i386 libgcc-s1:i386 lib32stdc++6 libstdc++5:i386
If nothing is quoted, check the module exists and is readable:
ls -la /opt/cod1/main/game.mp.i386.so
ldd /opt/cod1/main/game.mp.i386.so | grep 'not found'
If the module is absent, re-apply the patch — 1.5 for CoD1, 1.3 for CoD2 — making sure it is the dedicated server package, not the client-only patch.
A healthy load looks like:
Sys_LoadDll(/opt/cod1/main/game.mp.i386.so)... ok
Sys_LoadDll(game) found vmMain at 0xef0c0888
Sys_LoadDll(game) succeeded!
