Compilar en Linux
#1
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.
Responder
#2
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.
Responder
#3
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.
Responder
#4
Me quede en la parte del MakeFile, qué debo hacer para que se cree ?
Responder
#5
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)
Responder
#6
Yo compilo modulos en Ubuntu con el makefile por default que viene, solo le agregué los directorios al hlsdk y metamod...
No contesto mensajes privados pidiendo soporte!

Donaciones en btc 1EcNJV2gTFDYr7BBAFpMQk7pVCFEZCaKX4
Responder
#7
de donde descargaste el metamod y hlsdk ?
Responder
#8
(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
Responder
#9
(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 ?
Responder
#10
(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?
Responder
#11
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 =
Responder
#12
Muchas gracias a ambos, ya logré compilar!

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


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)