elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  MingWin - libcurl - compilacion estatica [SOLUCIONADO]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: MingWin - libcurl - compilacion estatica [SOLUCIONADO]  (Leído 6,185 veces)
oPen syLar


Desconectado Desconectado

Mensajes: 769


The Best of You..


Ver Perfil WWW
MingWin - libcurl - compilacion estatica [SOLUCIONADO]
« en: 10 Agosto 2011, 08:10 am »

Buenas actualmente desarrollo una aplicación en C++ sobre curl/MySQL con el IDE wxDev-C++ (Bloodshed Dev-C++) y tengo el inconveniente en la compilación estática no la consigo.. Lo que hago es lo siguiente


Agrego los directorios de los .a (lib estáticas) al linker
agrego el parámetro -static al linker
(Sin errores de ningun tipo... Compilo - Ejecuto

Al ejecutar en otra PC sigue pidiendome las dependencias de las libcurl.dll y zlib.dll y las dll del MYSQL... =S

Otra opcion seria un binder/joiner/packer pero para mi no es una alternativa meterle codigo que no se que hace al mi proyecto... No lo veo como algo muy razonable..

Busque dentro del foro.. Y solo encontre un hilo donde hablaban para la compilacion de una "libreria estatica" es deciur... Como compilar un lib.a


Ya revise todo el IDE active las opciones que dicen "Librerary Static" en vez "DLL Dinamic" pero nada... De nada.. De paso que doc del IDE esta bastante escasa.. =S


Alguien sabe como eliminar las dependecias del exe a las dlls.? Y hacer un solo ejecutable.?




« Última modificación: 11 Agosto 2011, 08:27 am por oPen syLar » En línea

Siempre habra 2 verdades, la que quieres creer y la que no aceptaras
Karman


Desconectado Desconectado

Mensajes: 673



Ver Perfil WWW
Re: MingWin y la compilacion estatica
« Respuesta #1 en: 10 Agosto 2011, 15:55 pm »

En el caso de dos de las que mencionas ("zlib" y "libcurl") en mi caso en la carpeta libs de mi compilador tengo:

Citar
libcurl.a -> 483kb
libcurldll.a -> 103kb
libz.a -> 92kb
libzdll.a-> 39kb

Donde por el nombre te darás cuenta que una es para linkeo estático y la otra es para linkeo dinámico (si, ambos se hacen a través de un archivo ".a"), lo que puede estar pasando es que no tengas la versión estática de la librería o la tengas con otro nombre, si no la tienes debes ir a la página del creador de la librería y descargarla desde ahí.



Lo mismo se aplica para cualquier librería.

S2


En línea

oPen syLar


Desconectado Desconectado

Mensajes: 769


The Best of You..


Ver Perfil WWW
Re: MingWin y la compilacion estatica
« Respuesta #2 en: 10 Agosto 2011, 19:19 pm »

Si si tengo las liberias estaticas.. De hecho agrego...

Código:
lib\libcurl.a

A mi prj pero sino agrego la otra lib .a (libcurldll.a) El compilador me pinta una paloma...


Código:
Compiler: Default GCC compiler
Building Makefile: "S:\Administrador\Mis documentos\sadasdaSDA\Makefile.win"
Executing  make clean
rm -f "Objects/MingW/main.o" Objects/MingW/Project1_private.res "Output/MingW/Project1.exe"

g++.exe  -c main.cpp -o Objects/MingW/main.o -I"S:/Dev-Cpp/lib/gcc/mingw32/3.4.5/include" -I"S:/Dev-Cpp/include/c++/3.4.5/backward" -I"S:/Dev-Cpp/include/c++/3.4.5/mingw32" -I"S:/Dev-Cpp/include/c++/3.4.5" -I"S:/Dev-Cpp/include" -I"S:/Dev-Cpp/" -I"S:/Dev-Cpp/include/common/wx/msw" -I"S:/Dev-Cpp/include/common/wx/generic" -I"S:/Dev-Cpp/include/common/wx/html" -I"S:/Dev-Cpp/include/common/wx/protocol" -I"S:/Dev-Cpp/include/common/wx/xml" -I"S:/Dev-Cpp/include/common/wx/xrc" -I"S:/Dev-Cpp/include/common/wx" -I"S:/Dev-Cpp/include/common" -DWXUSINGDLL     -O3

"windres.exe" --input-format=rc -o Objects/MingW/Project1_private.res --include-dir "S:/Dev-Cpp/include/common" Objects/MingW/PROJEC~1.RC -O coff

g++.exe "Objects/MingW/main.o" Objects/MingW/Project1_private.res -o "Output/MingW/Project1.exe" -L"S:/Dev-Cpp/Lib" ../../../Dev-Cpp/lib/libmysql.a ../../../Dev-Cpp/lib/libcurl.a ../../../Dev-Cpp/lib/libz.a ../../../Dev-Cpp/lib/libssl.a -static   

Objects/MingW/main.o:main.cpp:(.text+0x12e5): undefined reference to `_imp__curl_easy_init'
Objects/MingW/main.o:main.cpp:(.text+0x132e): undefined reference to `_imp__curl_easy_init'
Objects/MingW/main.o:main.cpp:(.text+0x1389): undefined reference to `_imp__curl_easy_setopt'
Objects/MingW/main.o:main.cpp:(.text+0x13c0): undefined reference to `_imp__curl_easy_setopt'
Objects/MingW/main.o:main.cpp:(.text+0x13f1): undefined reference to `_imp__curl_easy_setopt'

Objects/MingW/main.o:main.cpp:(.text+0x1410): undefined reference to `_imp__curl_easy_setopt'
Objects/MingW/main.o:main.cpp:(.text+0x1432): undefined reference to `_imp__curl_easy_setopt'
Objects/MingW/main.o:main.cpp:(.text+0x144c): undefined reference to `_imp__curl_easy_perform'
Objects/MingW/main.o:main.cpp:(.text+0x14c3): undefined reference to `_imp__curl_easy_strerror'
Objects/MingW/main.o:main.cpp:(.text+0x14e6): undefined reference to `_imp__curl_easy_perform'
Objects/MingW/main.o:main.cpp:(.text+0x15f6): undefined reference to `_imp__curl_easy_setopt'
Objects/MingW/main.o:main.cpp:(.text+0x162b): undefined reference to `_imp__curl_easy_setopt'
Objects/MingW/main.o:main.cpp:(.text+0x1645): undefined reference to `_imp__curl_easy_perform'
Objects/MingW/main.o:main.cpp:(.text+0x16c0): undefined reference to `_imp__curl_easy_strerror'
Objects/MingW/main.o:main.cpp:(.text+0x16e3): undefined reference to `_imp__curl_easy_perform'
Objects/MingW/main.o:main.cpp:(.text+0x1a22): undefined reference to `_imp__curl_easy_setopt'
Objects/MingW/main.o:main.cpp:(.text+0x1a59): undefined reference to `_imp__curl_easy_setopt'
Objects/MingW/main.o:main.cpp:(.text+0x1a68): undefined reference to `_imp__curl_easy_perform'
Objects/MingW/main.o:main.cpp:(.text+0x1adc): undefined reference to `_imp__curl_easy_strerror'
Objects/MingW/main.o:main.cpp:(.text+0x1aff): undefined reference to `_imp__curl_easy_perform'
Objects/MingW/main.o:main.cpp:(.text+0x21a7): undefined reference to `_imp__curl_easy_cleanup'
Objects/MingW/main.o:main.cpp:(.text+0x21ad): undefined reference to `_imp__curl_global_cleanup'
Objects/MingW/main.o:main.cpp:(.text+0x2413): undefined reference to `_imp__curl_easy_cleanup'
Objects/MingW/main.o:main.cpp:(.text+0x2419): undefined reference to `_imp__curl_global_cleanup'
collect2: ld returned 1 exit status

mingw32-make.exe: *** [Output/MingW/Project1.exe] Error 1

Execution terminated
Compilation Failed. Make returned 2


la libs .a que tengo agregadas a mi prj son..

Código:
../../../Dev-Cpp/lib/libmysql.a
../../../Dev-Cpp/lib/libcurl.a
../../../Dev-Cpp/lib/libz.a
../../../Dev-Cpp/lib/libssl.a


Cuando veo el contenido del paquete libcurl para wxDev-C++ me consigo con solo 2 libs .a

Código:
lib\libcurl.a
lib\libcurldll.a

Es decir... Solo tiene 2 liberias .a Sino agrego lib\libcurldll.a a mi prj.. Tira el error en el linker
En línea

Siempre habra 2 verdades, la que quieres creer y la que no aceptaras
Karman


Desconectado Desconectado

Mensajes: 673



Ver Perfil WWW
Re: MingWin y la compilacion estatica
« Respuesta #3 en: 10 Agosto 2011, 19:53 pm »

si te tira ese error es porque están mal los nombres de los archivos (el que dice dll es el estático y el otro el dinámico), probá renombrando los archivos o bajándolos de nuevo... luego para compilar estáticamente tuve que agregar esto:

En el código:
Código
  1. #define CURL_STATICLIB
  2. #include <curl/curl.h>

En el linker (dependencias de curl):
Citar
curl
idn
rtmp
ssh2
ssl
crypto
wldap32
gdi32
wsock32
z
winmm

S2
En línea

oPen syLar


Desconectado Desconectado

Mensajes: 769


The Best of You..


Ver Perfil WWW
Re: MingWin y la compilacion estatica
« Respuesta #4 en: 10 Agosto 2011, 21:28 pm »

Citar
si te tira ese error es porque están mal los nombres de los archivos (el que dice dll es el estático y el otro el dinámico), probá renombrando los archivos o bajándolos de nuevo...

Intente eso.. Pero nada... El mismo error... libcurl.a para el linker es igual a nada... Le da lo mismo tenerlo que no tenerlo en los parámetros

Al parecer el problema esta en el paquete que me había bajado.. Que lo e descargado desde devpaks.org y ese paquete no lo actualizan desde el 2005 =S ....

Intentare compilarlo a mano sin el devpak a ver que sale..

Saludos =D




En línea

Siempre habra 2 verdades, la que quieres creer y la que no aceptaras
oPen syLar


Desconectado Desconectado

Mensajes: 769


The Best of You..


Ver Perfil WWW
Re: MingWin y la compilacion estatica
« Respuesta #5 en: 11 Agosto 2011, 06:22 am »

Mirando las .h y buscando en la carpeta lib/ y en .zip que descargue... No encuentro por ninguna parte el .def de libcurl.. E leído en la lista de correo de curl que lo han eliminado... Mmmm.. libcurl.def hace falta para la compilación estática no.?


Quizás allí este el problema...
« Última modificación: 11 Agosto 2011, 06:25 am por oPen syLar » En línea

Siempre habra 2 verdades, la que quieres creer y la que no aceptaras
oPen syLar


Desconectado Desconectado

Mensajes: 769


The Best of You..


Ver Perfil WWW
Re: MingWin y la compilacion estatica
« Respuesta #6 en: 11 Agosto 2011, 07:41 am »

DIOS EXISTE *---* =DDDDD ........



En la lista de correo de curl http://curl.haxx.se/mail/tracker-2010-06/0021.html Al parecer se trata de un bug en la compilación estática... (Cuando se define CURL_STATICLIB)


La  solucion es muy sencilla parchear el curlbuild.h.in con....
http://sourceforge.net/tracker/download.php?group_id=976&atid=100976&file_id=377230&aid=3016471


Código:
patch curlbuild.h.in curl-1-fix-static.patch

Compilar .. El resultado .... Un fichero final de 1,40MB aprox =)



Hermano gracias por su ayuda.. =)  ... Si no fuera por usted duraria otras 24h sentado frente a mi PC buscando la solucion =)  .... De verdad mil gracias.. ^^  .....Saludos ;)
« Última modificación: 11 Agosto 2011, 08:16 am por oPen syLar » En línea

Siempre habra 2 verdades, la que quieres creer y la que no aceptaras
Karman


Desconectado Desconectado

Mensajes: 673



Ver Perfil WWW
Re: MingWin - libcurl - compilacion estatica [SOLUCIONADO]
« Respuesta #7 en: 11 Agosto 2011, 14:25 pm »

de nadas  :), aunque me parece raro... yo pude compilarlo sin parchear nada (debe ser distinta la versión de la librería que tenemos  :rolleyes:)

S2
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines