Mensajes: 723
Temas: 23
Registro en: May 2014
Reputación:
22
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.
Mensajes: 3,466
Temas: 18
Registro en: Oct 2013
Reputación:
54
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.
Mensajes: 1,455
Temas: 36
Registro en: Oct 2013
Reputación:
6
04/11/2014, 05:24 AM
(Última modificación: 04/11/2014, 05:48 AM por Destro.)
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.
Mensajes: 723
Temas: 23
Registro en: May 2014
Reputación:
22
Me quede en la parte del MakeFile, qué debo hacer para que se cree ?
Mensajes: 1,455
Temas: 36
Registro en: Oct 2013
Reputación:
6
04/11/2014, 01:11 PM
(Última modificación: 04/11/2014, 01:13 PM por Destro.)
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)
Mensajes: 4,637
Temas: 73
Registro en: Oct 2013
Reputación:
44
Yo compilo modulos en Ubuntu con el makefile por default que viene, solo le agregué los directorios al hlsdk y metamod...
Mensajes: 1,455
Temas: 36
Registro en: Oct 2013
Reputación:
6
de donde descargaste el metamod y hlsdk ?
Mensajes: 3,466
Temas: 18
Registro en: Oct 2013
Reputación:
54
(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
Mensajes: 723
Temas: 23
Registro en: May 2014
Reputación:
22
04/11/2014, 07:21 PM
(Última modificación: 04/11/2014, 07:21 PM por KISKE.)
(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 ?
Mensajes: 3,466
Temas: 18
Registro en: Oct 2013
Reputación:
54
(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?
Mensajes: 1,455
Temas: 36
Registro en: Oct 2013
Reputación:
6
04/11/2014, 07:51 PM
(Última modificación: 04/11/2014, 07:52 PM por Destro.)
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 =
Mensajes: 723
Temas: 23
Registro en: May 2014
Reputación:
22
05/11/2014, 02:21 AM
(Última modificación: 05/11/2014, 02:22 AM por KISKE.)
Muchas gracias a ambos, ya logré compilar!
Les daría reputación, pero no tengo suficientes mensajes
|