Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Compilar en mi pc y ejecutar en mi hosting, fincionara ?

Estas en el tema de Compilar en mi pc y ejecutar en mi hosting, fincionara ? en el foro de C/C++ en Foros del Web. Hola todos, tengo este archivo Código PHP:     #include <stdio.h>        main  ( argc ,  argv )    int argc ;    unsigned char  ** argv ; ...
  #1 (permalink)  
Antiguo 16/07/2008, 11:18
Avatar de lisandro Arg  
Fecha de Ingreso: octubre-2003
Ubicación: Cordoba, Argentina
Mensajes: 945
Antigüedad: 20 años, 6 meses
Puntos: 24
Compilar en mi pc y ejecutar en mi hosting, fincionara ?

Hola todos, tengo este archivo

Código PHP:
   #include <stdio.h>
   
  
main (argcargv)
  
int argc;
  
unsigned char **argv;
  {
  if ( 
argc != 10)
     {
      
printf (" ---ERROR EN LA SINTAXIS ---\n");
      
printf ("Sintaxis: calculo <Password> <MerchantID> <AcquirerBIN> <TerminalID> <Num_operacion> <Importe> <TipoMoneda> <Exponente> <Referencia>\n");
      exit (
1);
     }else{   
unsigned char Password [9];
     
unsigned char Firma [1001];
     
unsigned char MerchantID [10];
     
unsigned char AcquirerBIN [11];
     
unsigned char TerminalID [9];
     
unsigned char Num_operacion [51];
     
unsigned char Importe [16];
     
unsigned char TipoMoneda [4];
     
unsigned char Exponente [2];
     
unsigned char Referencia [51];
   
     
memset (Password0sizeof (Password));
     
memset (Firma0sizeof (Firma));
     
memset (MerchantID0sizeof (MerchantID));
     
memset (AcquirerBIN0sizeof (AcquirerBIN));
     
memset (TerminalID0sizeof (TerminalID));
     
memset (Num_operacion0sizeof (Num_operacion));
     
memset (Importe0sizeof (Importe));
     
memset (TipoMoneda0sizeof (TipoMoneda));
     
memset (Exponente0sizeof (Exponente));
     
memset (Referencia0sizeof (Referencia));
   
     
strncpy (Passwordargv [1], sizeof (Password));
     
strncpy (MerchantIDargv [2], sizeof (MerchantID));
     
strncpy (AcquirerBINargv [3], sizeof (AcquirerBIN));
     
strncpy (TerminalIDargv [4], sizeof (TerminalID));
     
strncpy (Num_operacionargv [5], sizeof (Num_operacion));
     
strncpy (Importeargv [6], sizeof (Importe));
     
strncpy (TipoMonedaargv [7], sizeof (TipoMoneda));
     
strncpy (Exponenteargv [8], sizeof (Exponente));
     
strncpy (Referenciaargv [9], sizeof (Referencia));
   
     
calcular_firma (Password,MerchantID,AcquirerBIN,TerminalID,Num_operacion,Importe,TipoMoneda,Exponente,Referencia,Firma);
     
printf (Firma);
     exit (
0);
     }
  } 
y necesito compilarlo en el hosting de mi cliente con esta linea:

cc -o calculo calculo.c -L./ -ltpv

pero no puedo porque el cliente no tien SSH y los del hosting le han dicho que ellos no lo puden ejecutar ( quieren que contrate una cuenta superior )

por eso habia pensado en que podia instalar linux en mi pc, compilarlo y luejo subir el ejecutable al hosting

No se mucho de C++ pero veo que la unica dependencia es la libreria stdio. h, una de las mas comunes o la mas común en C, creen que puede funcionar ?

  #2 (permalink)  
Antiguo 16/07/2008, 12:03
Avatar de Xinef  
Fecha de Ingreso: marzo-2007
Mensajes: 202
Antigüedad: 17 años, 1 mes
Puntos: 7
Respuesta: Compilar en mi pc y ejecutar en mi hosting, fincionara ?

Cita:
Iniciado por lisandro Arg Ver Mensaje
necesito compilarlo en el hosting de mi cliente con esta linea:

cc -o calculo calculo.c -L./ -ltpv
Ahí le estás indicando que enlace con la biblioteca tpv... pero como bien dices el programa no tiene mayor dependencia... así que no sé que sentido tiene ese enlazado. :X

Cita:
No se mucho de C++ pero veo que la unica dependencia es la libreria stdio. h, una de las mas comunes o la mas común en C, creen que puede funcionar ?
Aún cuando tuviera más dependencias, siempre puedes hacer un enlazado estático... así que tu ejecutable correrá en cualquier sistema (para el que esté compilado, claro).
  #3 (permalink)  
Antiguo 17/07/2008, 03:39
Avatar de lisandro Arg  
Fecha de Ingreso: octubre-2003
Ubicación: Cordoba, Argentina
Mensajes: 945
Antigüedad: 20 años, 6 meses
Puntos: 24
Respuesta: Compilar en mi pc y ejecutar en mi hosting, fincionara ?

Finalmente no va a ser necesario. El cliente ha contratado un pack superior que tiene acceso a SSH asi que vamos a poder compilar el archivo directamente en el servidor

Muchas gracias Xinef
Saludos
  #4 (permalink)  
Antiguo 18/07/2008, 13:57
Avatar de lisandro Arg  
Fecha de Ingreso: octubre-2003
Ubicación: Cordoba, Argentina
Mensajes: 945
Antigüedad: 20 años, 6 meses
Puntos: 24
Respuesta: Compilar en mi pc y ejecutar en mi hosting, fincionara ?

Hola Xinef, otra vez yo, ahora tengo funcionando la linea de comando pero al compilar me tira algunor errores y no hace nada, te copio la linea que quiero ejecutar y los errores que muestra:

Cita:
cc -o calculo /kunden/homepages/d246724706/htdocs/carpetapublicacion/calculo.c -l./carpetapublicacion -ltpv
/kunden/homepages/d246724706/htdocs/carpetapublicacion/calculo.c: In function 'main':
/kunden/homepages/d246724706/htdocs/carpetapublicacion/calculo.c:11: warning: incompatible implicit declaration of built-in function 'exit'
/kunden/homepages/d246724706/htdocs/carpetapublicacion/calculo.c:23: warning: incompatible implicit declaration of built-in function 'memset'
/kunden/homepages/d246724706/htdocs/carpetapublicacion/calculo.c:34: warning: incompatible implicit declaration of built-in function 'strncpy'
/kunden/homepages/d246724706/htdocs/carpetapublicacion/calculo.c:46: warning: incompatible implicit declaration of built-in function 'exit'
/usr/bin/ld: cannot find -l./carpetapublicacion
collect2: ld returned 1 exit status
1 - He probado como "directorio de instalacion" varias cosas y lo mismo, en el ejemplo podes ver ./carpetadepublicacion, pero como te digo pruebo de todo y es igual

2 - No me habia dado cuenta que tenia que subir el archivo libtpv.a, ejecute esos comando con esa libreria y sin ella pero no hay diferencia

3 - Los errores claramente muestran que no esta reconociendo las funciones que deberian estar en la libreria .a pero no puedo verla ya que no tengo un editor de C a mano, de todas formas no creo que funcione mal ese archivo, sospecho mas de las rutas a ese archivo o algo asi

4 - Por ultimo, el ultimo erro que muestras es "
/usr/bin/ld: cannot find -l./carpetapublicacion" eso quiere decir que busca el carpeatdepublicacion dentro de ese directorio ?

Gracias
  #5 (permalink)  
Antiguo 19/07/2008, 02:19
Avatar de Xinef  
Fecha de Ingreso: marzo-2007
Mensajes: 202
Antigüedad: 17 años, 1 mes
Puntos: 7
Respuesta: Compilar en mi pc y ejecutar en mi hosting, fincionara ?

A ver.. prueba estos cambios en el código... Lo único que he hecho es meter el fichero de cabecera string.h y cambiar los exit() por return, haciendo que main sea una función:

Código PHP:
 #include <stdio.h>
 #include <string.h>
   
 
int main (argcargv)
  
int argc;
  
unsigned char **argv;
  {
  if ( 
argc != 10)
     {
      
printf (" ---ERROR EN LA SINTAXIS ---\n");
      
printf ("Sintaxis: calculo <Password> <MerchantID> <AcquirerBIN> <TerminalID> <Num_operacion> <Importe> <TipoMoneda> <Exponente> <Referencia>\n");
      return 
1;
     }else{   
unsigned char Password [9];
     
unsigned char Firma [1001];
     
unsigned char MerchantID [10];
     
unsigned char AcquirerBIN [11];
     
unsigned char TerminalID [9];
     
unsigned char Num_operacion [51];
     
unsigned char Importe [16];
     
unsigned char TipoMoneda [4];
     
unsigned char Exponente [2];
     
unsigned char Referencia [51];
   
     
memset (Password0sizeof (Password));
     
memset (Firma0sizeof (Firma));
     
memset (MerchantID0sizeof (MerchantID));
     
memset (AcquirerBIN0sizeof (AcquirerBIN));
     
memset (TerminalID0sizeof (TerminalID));
     
memset (Num_operacion0sizeof (Num_operacion));
     
memset (Importe0sizeof (Importe));
     
memset (TipoMoneda0sizeof (TipoMoneda));
     
memset (Exponente0sizeof (Exponente));
     
memset (Referencia0sizeof (Referencia));
   
     
strncpy (Passwordargv [1], sizeof (Password));
     
strncpy (MerchantIDargv [2], sizeof (MerchantID));
     
strncpy (AcquirerBINargv [3], sizeof (AcquirerBIN));
     
strncpy (TerminalIDargv [4], sizeof (TerminalID));
     
strncpy (Num_operacionargv [5], sizeof (Num_operacion));
     
strncpy (Importeargv [6], sizeof (Importe));
     
strncpy (TipoMonedaargv [7], sizeof (TipoMoneda));
     
strncpy (Exponenteargv [8], sizeof (Exponente));
     
strncpy (Referenciaargv [9], sizeof (Referencia));
   
     
calcular_firma (Password,MerchantID,AcquirerBIN,TerminalID,Num_operacion,Importe,TipoMoneda,Exponente,Referencia,Firma);
     
printf (Firma);
     return 
0;
     }
  } 
Copia la bilbioteca libtpv.a al directorio donde hayas copiado el fichero fuente.

Y lanza este comando de compilación desde el mismo directorio:

Código PHP:
    cc -o calculo calculo.-L./ -ltpv 
Con eso debería funcionar, aunque me extraña que TPV no tenga un fichero .h que declarar.


Uhm... edito para comentar que si existe algún impedimento para usar main como función y necesitas usar exit, sólo tienes que incluir el fichero de cabecera: stdlib.h.

Última edición por Xinef; 19/07/2008 a las 02:23 Razón: Comentar una cosilla de exit....
  #6 (permalink)  
Antiguo 19/07/2008, 14:23
Avatar de lisandro Arg  
Fecha de Ingreso: octubre-2003
Ubicación: Cordoba, Argentina
Mensajes: 945
Antigüedad: 20 años, 6 meses
Puntos: 24
Respuesta: Compilar en mi pc y ejecutar en mi hosting, fincionara ?

bueno... hemos avanzado, ya lo compila. Lo malo es que lo hace mostrando un warning y aparentemente el ejecutable no funciona bien, ya que tendria que devolver un numero y no hace nada

El error es

Cita:
(uiserver):u49449350:~/carpetapublicacion > cc -o calculo calculo.c -L./ -ltpv
.//libtpv.a(rutinas_des.o): In function `calcular_firma':
rutinas_des.c:(.text+0x244b): warning: the use of `tempnam' is dangerous, better use `mkstemp'
parece un error interno de la libreria, creo que voy a tener que esperar al lunes a ver si me dan soporte, pero lo dejo aca por si tenes algun dato mas

Gracias Xinef !
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:35.