Allied Modders en español

Versión completa: Compilar en Linux
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Hola,

No encontré una mejor sección en donde escribir esto.

Tengo una VM con Linux (creo que Ubuntu) y quiero compilar un modulo (ejemplo el amxmodx) para que me cree el .so

Y la verdad es que estoy muy perdido, ni siquiera se que clase de programa debo instalar si es que tengo que instalar alguno.


Gracias de antemano.
Con apt-get:

Instala gcc
Instala g++
Instala makefile

Anda a la carpeta del modulo (codigo fuente) en donde se encuentre el archivo MakeFile, y ahi en el prompt de la consola pones este horrendo comando

Cita:make

Y empezara a compilar. Te dirá todos los posibles errores y/o warnings. El más común es que no haz creado el directorio de Release. Es una verga mundial.
Pues nose a que le erre pero no logro compilar, estoy casi seguro que hice lo mismo que la ultima vez que compile en linux.

Código:
emanuel@amxlinux:~/amxx_mm_hlsdk/amxx_183/dlls/fun$ make
mkdir -p Release
ln -sf ../../public/sdk/amxxmodule.cpp
make -f /home/emanuel/amxx_mm_hlsdk/amxx_183/dlls/fun/Makefile fun
make[1]: se ingresa al directorio «/home/emanuel/amxx_mm_hlsdk/amxx_183/dlls/fun»
gcc -I. -I../../public -I../../public/sdk -I../../public/amtl -I../../../hlsdk -I../../../hlsdk/public -I../../../hlsdk/common -I../../../hlsdk/dlls -I../../../hlsdk/engine -I../../../hlsdk/game_shared -I../../../hlsdk/pm_shared -I../../../metamod/metamod -DLINUX -DPAWN_CELL_SIZE=32 -DJIT -DASM32 -DHAVE_STDINT_H -fno-strict-aliasing -m32 -Wall -Werror -DNDEBUG -O2 -funroll-loops -fomit-frame-pointer -pipe -fvisibility=hidden -fno-exceptions -fno-rtti -fvisibility-inlines-hidden -o Release/amxxmodule.o -c amxxmodule.cpp
In file included from ../../public/sdk/amxxmodule.h:25:0,
                 from amxxmodule.cpp:20:
../../../hlsdk/dlls/extdll.h:29:0: error: se descarta el #pragma warning  [-Werror=unknown-pragmas]
../../../hlsdk/dlls/extdll.h:30:0: error: se descarta el #pragma warning  [-Werror=unknown-pragmas]
../../../hlsdk/dlls/extdll.h:31:0: error: se descarta el #pragma warning  [-Werror=unknown-pragmas]
../../../hlsdk/dlls/extdll.h:32:0: error: se descarta el #pragma warning  [-Werror=unknown-pragmas]
../../../hlsdk/dlls/extdll.h:33:0: error: se descarta el #pragma warning  [-Werror=unknown-pragmas]
In file included from ../../../metamod/metamod/sdk_util.h:55:0,
                 from ../../../metamod/metamod/dllapi.h:40,
                 from ../../../metamod/metamod/meta_api.h:40,
                 from ../../public/sdk/amxxmodule.h:26,
                 from amxxmodule.cpp:20:
../../../hlsdk/dlls/util.h:249:70: error: se descartó ‘typedef’ en esta declaración [-Werror]
In file included from ../../../metamod/metamod/dllapi.h:41:0,
                 from ../../../metamod/metamod/meta_api.h:40,
                 from ../../public/sdk/amxxmodule.h:26,
                 from amxxmodule.cpp:20:
../../../metamod/metamod/osdep.h: En la función ‘char* DLERROR()’:
../../../metamod/metamod/osdep.h:141:28: error: conversión obsoleta de una constante de cadena a ‘char*’ [-Werror=write-strings]
In file included from ../../../metamod/metamod/dllapi.h:41:0,
                 from ../../../metamod/metamod/meta_api.h:40,
                 from ../../public/sdk/amxxmodule.h:26,
                 from amxxmodule.cpp:20:
../../../metamod/metamod/osdep.h: En la función ‘int THREAD_CREATE(THREAD_T*, void (*)())’:
../../../metamod/metamod/osdep.h:297:59: error: conversión obsoleta de una constante de cadena a ‘char*’ [-Werror=write-strings]
../../../metamod/metamod/osdep.h:302:60: error: conversión obsoleta de una constante de cadena a ‘char*’ [-Werror=write-strings]
../../../metamod/metamod/osdep.h: En la función ‘int MUTEX_INIT(MUTEX_T*)’:
../../../metamod/metamod/osdep.h:329:53: error: conversión obsoleta de una constante de cadena a ‘char*’ [-Werror=write-strings]
../../../metamod/metamod/osdep.h: En la función ‘int MUTEX_LOCK(MUTEX_T*)’:
../../../metamod/metamod/osdep.h:336:53: error: conversión obsoleta de una constante de cadena a ‘char*’ [-Werror=write-strings]
../../../metamod/metamod/osdep.h: En la función ‘int MUTEX_UNLOCK(MUTEX_T*)’:
../../../metamod/metamod/osdep.h:343:55: error: conversión obsoleta de una constante de cadena a ‘char*’ [-Werror=write-strings]
../../../metamod/metamod/osdep.h: En la función ‘int COND_INIT(COND_T*)’:
../../../metamod/metamod/osdep.h:374:52: error: conversión obsoleta de una constante de cadena a ‘char*’ [-Werror=write-strings]
../../../metamod/metamod/osdep.h: En la función ‘int COND_WAIT(COND_T*, MUTEX_T*)’:
../../../metamod/metamod/osdep.h:381:52: error: conversión obsoleta de una constante de cadena a ‘char*’ [-Werror=write-strings]
../../../metamod/metamod/osdep.h: En la función ‘int COND_SIGNAL(COND_T*)’:
../../../metamod/metamod/osdep.h:388:54: error: conversión obsoleta de una constante de cadena a ‘char*’ [-Werror=write-strings]
amxxmodule.cpp: En el ámbito global:
amxxmodule.cpp:2051:1: error: conversión obsoleta de una constante de cadena a ‘char*’ [-Werror=write-strings]
amxxmodule.cpp:2051:1: error: conversión obsoleta de una constante de cadena a ‘char*’ [-Werror=write-strings]
amxxmodule.cpp:2051:1: error: conversión obsoleta de una constante de cadena a ‘char*’ [-Werror=write-strings]
amxxmodule.cpp:2051:1: error: conversión obsoleta de una constante de cadena a ‘char*’ [-Werror=write-strings]
amxxmodule.cpp:2051:1: error: conversión obsoleta de una constante de cadena a ‘char*’ [-Werror=write-strings]
amxxmodule.cpp:2051:1: error: conversión obsoleta de una constante de cadena a ‘char*’ [-Werror=write-strings]
amxxmodule.cpp:2051:1: error: conversión obsoleta de una constante de cadena a ‘char*’ [-Werror=write-strings]
amxxmodule.cpp: En la función ‘int Meta_Query(const char*, plugin_info_t**, mutil_funcs_t*)’:
amxxmodule.cpp:2223:104: error: la declaración de la función C ‘int Meta_Query(const char*, plugin_info_t**, mutil_funcs_t*)’ genera un conflicto con
../../../metamod/metamod/meta_api.h:134:17: error: declaración previa de ‘int Meta_Query(char*, plugin_info_t**, mutil_funcs_t*)’ aquí
amxxmodule.cpp: En la función ‘void UTIL_LogPrintf(const char*, ...)’:
amxxmodule.cpp:3050:33: error: conversión obsoleta de una constante de cadena a ‘char*’ [-Werror=write-strings]
cc1plus: all warnings being treated as errors
make[1]: *** [Release/amxxmodule.o] Error 1
make[1]: se sale del directorio «/home/emanuel/amxx_mm_hlsdk/amxx_183/dlls/fun»
make: *** [all] Error 2
emanuel@amxlinux:~/amxx_mm_hlsdk/amxx_183/dlls/fun$
AMXX 1.8.3
HLSDK 2.3p4
METAMOD 1.20

mañana probare con los files del metamod y hlsdk que tienen en github.
Me quede en la parte del MakeFile, qué debo hacer para que se cree ?
viene con en el source de los modulos (al menos los default de amxx)


Yo ya pude compilar fun, en mi caso para solucionar esos errores que me tiraba fui a meta_api.h y comente la declaración Meta_Query y agregue -Wno-deprecated en CFLAGS (en el makefile)
Yo compilo modulos en Ubuntu con el makefile por default que viene, solo le agregué los directorios al hlsdk y metamod...
de donde descargaste el metamod y hlsdk ?
(04/11/2014, 04:05 PM)Destro escribió: [ -> ]de donde descargaste el metamod y hlsdk ?

Tranquilo, la diferencia es que el prototipo de Meta_Query tiene el primer parametro declarado constante y en las otras funciones no, solo hay que editarlo
(04/11/2014, 01:11 PM)Destro escribió: [ -> ]viene con en el source de los modulos (al menos los default de amxx)

Y los que no vienen ?
(04/11/2014, 07:21 PM)KISKE escribió: [ -> ]
(04/11/2014, 01:11 PM)Destro escribió: [ -> ]viene con en el source de los modulos (al menos los default de amxx)

Y los que no vienen ?

Que jodido módulo no viene con su MakeFile en el paquete mismo?
Suponiendo que tenes un modulo que no tiene el makefile, agarras un makefile de otro modulo y cambias esto:
makefile fun escribió:#####################################
### EDIT BELOW FOR OTHER PROJECTS ###
#####################################

PROJECT = fun

OBJECTS = amxxmodule.cpp fun.cpp

Si tenes que linkear alguna librería:
makefile fun escribió:##############################################
### CONFIGURE ANY OTHER FLAGS/OPTIONS HERE ###
##############################################
LINK =
Muchas gracias a ambos, ya logré compilar!

Les daría reputación, pero no tengo suficientes mensajes Nothingdohere