goldeneye-source / ges-code

GoldenEye: Source on SDK 2013
http://www.geshl2.com
GNU General Public License v3.0
200 stars 27 forks source link

Can't make on GNU/Linux #9

Closed son-link closed 9 years ago

son-link commented 10 years ago

Hy, firts sorry for my english. I tray to compile the game in GNU/Linux but make show this error:

make[2]: Leaving directory '/media/1tb/Juegos/ges-code/game/client'
---- LINKING obj_server_ges_linux32/release/server.so [release] ----
../../lib/ges/linux32/python26.a(posixmodule.o): In function `posix_tmpnam':
/home/jon/Downloads/Python-2.6.8/./Modules/posixmodule.c:7261: warning: the use of `tmpnam_r' is dangerous, better use `mkstemp'
../../lib/ges/linux32/python26.a(posixmodule.o): In function `posix_tempnam':
/home/jon/Downloads/Python-2.6.8/./Modules/posixmodule.c:7216: warning: the use of `tempnam' is dangerous, better use `mkstemp'
../../lib/ges/linux32/boost_python.a(builtin_converters.o): In function `encode_string_unaryfunc':
/media/1tb/Juegos/ges-code/thirdparty/boost/libs/python/src/converter/builtin_converters.cpp:409: undefined reference to `PyUnicodeUCS4_FromEncodedObject'
../../lib/ges/linux32/boost_python.a(builtin_converters.o): In function `construct':
/media/1tb/Juegos/ges-code/thirdparty/boost/libs/python/src/converter/builtin_converters.cpp:442: undefined reference to `PyUnicodeUCS4_AsWideChar'
../../lib/ges/linux32/python26.a(posixmodule.o): In function `posix_forkpty':
posixmodule.c:(.text+0x2893): undefined reference to `forkpty'
../../lib/ges/linux32/python26.a(posixmodule.o): In function `posix_openpty':
posixmodule.c:(.text+0x420c): undefined reference to `openpty'
collect2: error: ld returned 1 exit status
../../devtools/makefile_base_posix.mak:485: recipe for target 'obj_server_ges_linux32/release/server.so' failed
make[2]: *** [obj_server_ges_linux32/release/server.so] Error 1
make[2]: Leaving directory '/media/1tb/Juegos/ges-code/game/server'
everything.mak:47: recipe for target 'server_ges' failed
make[1]: *** [server_ges] Error 2
make[1]: Leaving directory '/media/1tb/Juegos/ges-code'
everything.mak:23: recipe for target 'all' failed
make: *** [all] Error 2

My sistem is: S.O.: Archlinux x86_64 GCC: 4.9.1 make: 4.0

droidmonkey commented 10 years ago

My initial thought is that you don't have the proper libraries installed on your system. Please ensure you have the 32-bit versions of the libc libraries.

son-link commented 10 years ago

I hace the multilib versions (32 and 64 bits libs) for GCC, libc and lib32 for another libs, and now installing lib32-python 2.7, and download the last version of Boost and replace the folder include in the proyect, just to tray.

son-link commented 10 years ago

Still not working, show the same message. Wath libs is necesary for compile the game?

droidmonkey commented 10 years ago

You can find all the libs we require in our vpc files. It is likely something you are missing that Python depends on, however, since you are getting linker errors when you are bringing in Python.

  1. We use Python 2.6
  2. Try this: http://www.gossamer-threads.com/lists/python/python/66671#66671
son-link commented 10 years ago

I compiled Python 2.7 for 32 and replace the route in server_linux32_ges.mak, but now show a big lines of errors (y redictecrt error exit to a log fila and his sice is 1.2mb) These is the last lines

./obj_server_ges_linux32/release/ge_pyweapon.o:(.rodata._ZTVN5boost6python7objects23caller_py_function_implINS0_6detail6callerIM17CBaseCombatWeaponKFbvENS0_21default_call_policiesENS_3mpl7vector2IbR9CGEWeaponEEEEEE[_ZTVN5boost6python7objects23caller_py_function_implINS0_6detail6callerIM17CBaseCombatWeaponKFbvENS0_21default_call_policiesENS_3mpl7vector2IbR9CGEWeaponEEEEEE]+0x18): undefined reference to `boost::python::objects::py_function_impl_base::max_arity() const'
./obj_server_ges_linux32/release/ge_pyweapon.o:(.rodata._ZTVN5boost6python7objects23caller_py_function_implINS0_6detail6callerIM9CGEWeaponFbvENS0_21default_call_policiesENS_3mpl7vector2IbRS5_EEEEEE[_ZTVN5boost6python7objects23caller_py_function_implINS0_6detail6callerIM9CGEWeaponFbvENS0_21default_call_policiesENS_3mpl7vector2IbRS5_EEEEEE]+0x18): more undefined references to `boost::python::objects::py_function_impl_base::max_arity() const' follow
collect2: error: ld returned 1 exit status
../../devtools/makefile_base_posix.mak:485: recipe for target 'obj_server_ges_linux32/release/server.so' failed
make[2]: *** [obj_server_ges_linux32/release/server.so] Error 1
make[2]: Leaving directory '/media/1tb/Juegos/ges-code/game/server'
games.mak:47: recipe for target 'server_ges' failed
make[1]: *** [server_ges] Error 2
make[1]: Leaving directory '/media/1tb/Juegos/ges-code'
games.mak:23: recipe for target 'all' failed
make: *** [all] Error 2

I download Boosts and compile for 32 bits too and change the same file, but show the same error.

droidmonkey commented 10 years ago

1) We use Python 2.6 2) Boost should be auto compiled with the mod, there is no reason to compile that separately. 3) I'd recommend you install a virtual machine with Linux Mint 17 on it and try to compile from there because my build chain works fine. 4) You might also want to try downgrading your gcc version to 4.8.x

droidmonkey commented 10 years ago

I've fixed all building issues. Try checking out the new Python 3 branch and running './runmake.sh'

https://github.com/goldeneye-source/ges-code/tree/dev/python3

As a general note, you must have the Steam Runtime SDK installed in the same base directory as the GES Code (i.e: ~/Projects/ges-code/ and ~/Projects/steam-runtime-sdk/)

I am going to fix that up a little in the next commit to allow you to define your runtime directory in an environment variable.

son-link commented 10 years ago

Ok, i followed the steps and return this error:

~/compilar/ges-code/thirdparty/python3/ges_build ~/compilar/ges-code/thirdparty/python3
No need to configure!
gcc -pthread -L ../Extras/lib32  -Xlinker -export-dynamic -o python Modules/python.o -L. -lpython3.4m -lpthread -ldl  -lutil -L/home/cscz/compilar/ges-code/thirdparty/python3/ges_build/bin/lib -lz   -lm  
./libpython3.4m.so: undefined reference to `clock_gettime'
./libpython3.4m.so: undefined reference to `clock_getres'
./libpython3.4m.so: undefined reference to `clock_settime'
collect2: ld returned 1 exit status
Makefile:550: recipe for target 'python' failed
make: *** [python] Error 1
gcc -pthread -L ../Extras/lib32  -Xlinker -export-dynamic -o python Modules/python.o -L. -lpython3.4m -lpthread -ldl  -lutil -L/home/cscz/compilar/ges-code/thirdparty/python3/ges_build/bin/lib -lz   -lm  
./libpython3.4m.so: undefined reference to `clock_gettime'
./libpython3.4m.so: undefined reference to `clock_getres'
./libpython3.4m.so: undefined reference to `clock_settime'
collect2: ld returned 1 exit status
Makefile:550: recipe for target 'python' failed
make: *** [python] Error 1
Deploying Python to build directories...
'../Include/pyconfig.h' -> '../ges_build/bin/include/python3.4m/pyconfig.h'
cp: cannot stat './bin/lib/libpython3.4m.so.1.0': No such file or directory
chmod: cannot access '../../../bin/mod_ges/libpython*': No such file or directory
'../../../lib/ges/linux32/libpython3.so' -> '../../../bin/mod_ges/libpython3.4m.so.1.0'
~/compilar/ges-code/thirdparty/python3
´´´
Compiling in Archlinux 32bits version under Virtualbox
droidmonkey commented 10 years ago

Oops! I forgot to commit a necessary library.

Do a pull, then delete the 'thirdparty/python3/ges_build' folder and run ./runmake.sh again.

son-link commented 10 years ago
---- LINKING obj_client_ges_linux32/release/client.so [release] ----
./obj_client_ges_linux32/release/baseachievement.o: file not recognized: File truncated
collect2: ld returned 1 exit status
../../devtools/makefile_base_posix.mak:485: recipe for target 'obj_client_ges_linux32/release/client.so' failed
make[2]: *** [obj_client_ges_linux32/release/client.so] Error 1
make[2]: Leaving directory '/home/cscz/compilar/ges-code/game/client'
games.mak:35: recipe for target 'client_ges' failed
make[1]: *** [client_ges] Error 2
make[1]: Leaving directory '/home/cscz/compilar/ges-code'
games.mak:23: recipe for target 'all' failed
make: *** [all] Error 2
droidmonkey commented 10 years ago

delete that baseachievement.o file and run the make again. Something didn't build correctly.

son-link commented 10 years ago

Build complete :D But ¿howe to install the mod? i copy the bin and lib folder to steamApps/sourcemod/ges but not show in Steam games list

droidmonkey commented 10 years ago

You need to download the full mod from www.geshl2.com

The build script automatically copies the needed files to your gesource mod path. You need to define the GES_PATH env variable first, though.

Do note, the Linux build is still highly wip and there are some serious bugs that Valve needs to address before it will work. You can also try running the "./runges.sh" script once you download the whole mod.

son-link commented 10 years ago

I copy all to the sourcemods folder (in my case in /media/1tb/Steam/SteamApps/sourcemods ) and copy runges.sh and modify, but not run:

[sonlink@Matrix gesource]$ ./runges.sh 
/media/1tb/Steam/SteamApps/common/Source SDK Base 2013 Multiplayer /media/1tb/Steam/SteamApps/sourcemods/gesource
Failed to load the launcher
/media/1tb/Steam/SteamApps/sourcemods/gesource

I download Source SDK 2013 Singlepayer and the last relese i compiled 32 in my 64 bits sistem withaout no problem

droidmonkey commented 10 years ago

I am going to push some fixes to the scripts this evening.

ALL DONE!

You should define both GES_PATH and STEAM_RUNTIME_ROOT environment variables. Preferably in your .bashrc file