Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Linux (https://www.clubdelphi.com/foros/forumdisplay.php?f=25)
-   -   Screenshots Centos 5.0 Lazarus, Webmin, K3b, XMMS. (https://www.clubdelphi.com/foros/showthread.php?t=42461)

roman 17-04-2007 18:40:35

Yo tuve algunos problemas para compilarlo con el gtk2 por una librería libgdm, o algo así, luego reviso. El problema es que si estaba instalada pero tenía un nombre distinto o por la versión. El caso es que usé el truco del enlace simbólico y funcionó.

Ahora, en principio no tiene uno que ser root para compilar a menos que instales el lazarus como root en las carpetas /usr/... De hecho, nunca tuve que hacer un su para instalar lazarus.

Pero sí que es lento. Quizá porque a fin de cuentas no estoy enlazando con las bibliotecas correctas, pero tratar de acomodar un TNoteBook es cosa de jalarse los pelos. La verdad es que quiero probarlo tan sólo por no dejar pero no me convence nada.

No he tenido mucho tiempo de investigar, pero a mi me entusiasma la idea de python. Al menos los ejemplos de wxPython se ven sensacionales, con controles de todo tipo y muy vistosos y nada de lentos. Pero además con python pueden encontrarse múltiples frameworks tanto para escrtorio como para web y mucho código puedes reusarlo en uno y otro lado.

// Saludos

poliburro 17-04-2007 19:07:58

Cita:

Empezado por roman
Pero sí que es lento. Quizá porque a fin de cuentas no estoy enlazando con las bibliotecas correctas, pero tratar de acomodar un TNoteBook es cosa de jalarse los pelos. La verdad es que quiero probarlo tan sólo por no dejar pero no me convence nada.
// Saludos

Debe ser por las bibliotecas, por que en mi pc con centos corre como seda :P. y no tengo ningún problema para compilar :P.

kovaski 17-04-2007 20:42:02

Cita:

Empezado por poliburro
Vaya, que gusto, esto está poniendose cada vez más interesante :P.

Sería muy bueno participar en el desarrollo de lazarus no cren :P ?

Estoy contigo.

Aunque nunca he colaborado en ningun proyecto de esta indole. Sera cuestión de probar.

Saludos.

seoane 17-04-2007 21:33:31

Cita:

Empezado por poliburro
Sería muy bueno participar en el desarrollo de lazarus no cren :P

Hace tiempo que quiero participar en algún proyecto, pero la verdad no sabría por donde empezar ... :o
Cita:

Empezado por roman
Ahora, en principio no tiene uno que ser root para compilar a menos que instales el lazarus como root en las carpetas /usr/... De hecho, nunca tuve que hacer un su para instalar lazarus.

:( Yo lo instale usando los paquetes .deb asi que no me quedo mas remedio que hacerlo como root.
Cita:

Empezado por roman
... pero a mi me entusiasma la idea de python. Al menos los ejemplos de wxPython se ven sensacionales, con controles de todo tipo y muy vistosos y nada de lentos. Pero además con python pueden encontrarse múltiples frameworks tanto para escrtorio como para web y mucho código puedes reusarlo en uno y otro lado.

A mi también, ¿conoces algún IDE para python? ¿alguno que permita diseñar formularios? yo solo conozcoo Glade.

Casimiro Notevi 17-04-2007 22:10:45

Estaría muy bien ayudar en Lazarus, aunque pasa como con todo: el maldito tiempo :(

seoane 18-04-2007 00:30:21

1 Archivos Adjunto(s)
Sigo opinando que todavía no se trabaja con la misma rapidez que en Delphi, pero no deja de ser interesante. Ahí va mi primera aplicación en lazarus para linux, para quien este aburrido ...

PD: Utilizar "Ejecutar -> Construir todo" antes de ejecutarlo, ya que tuve que borrar los archivos .o para que el zip midiera menos de 29kb

mightydragonlor 23-04-2007 20:07:00

Los Programas en Lazarus quedan muy pesados, ¿como hago para que queden mas livianos?, ¿en linux con que extencion quedan?, ¿los programas en linux quedan independientes como en windows? y donde puedo descargar el Ubuntu?; gracias y espero que puedan responder mis dudas.

seoane 23-04-2007 21:29:02

Cita:

Empezado por mightydragonlor
Los Programas en Lazarus quedan muy pesados, ¿como hago para que queden mas livianos?

Para que los programas queden mas livianos en el menú "Proyecto / Opciones del compilador / Enlazado" escoge la opción "Enlazar pequeña". El ejecutable sera mas pequeño, pero aun así, seguirá siendo bastante grande comparados con los que genera delphi.

Cita:

Empezado por mightydragonlor
¿en linux con que extencion quedan?

Si te refieres al tamaño, siguen siendo grandes :( Si te refieres a la extension del nombre del ejecutable (.exe en windows), en linux no tiene.

Cita:

Empezado por mightydragonlor
¿los programas en linux quedan independientes como en windows?

Hasta donde yo se si, puede que necesites instalar gtk ...

Cita:

Empezado por mightydragonlor
y donde puedo descargar el Ubuntu?

Lo puedes descargar de aquí http://www.ubuntu.com/ incluso hasta hace poco te enviaban un cd a casa por correo si no querías descargarlo, no se si lo siguen haciendo.

roman 23-04-2007 21:41:45

Bueno, pero esto de enlazar pequeña (que en realidad es pasar de gigante a enorme :D) ha de tener alguna contra ¿no? Esto es, no sé si fuera similar al "Build with runtime packages" de Delphi. ¿Has probado, si el ejecutable corre bien en un linux sin lázarus instalado?

// Saludos

seoane 23-04-2007 21:57:13

Cita:

Empezado por roman
Bueno, pero esto de enlazar pequeña (que en realidad es pasar de gigante a enorme :D) ha de tener alguna contra ¿no? Esto es, no sé si fuera similar al "Build with runtime packages" de Delphi. ¿Has probado, si el ejecutable corre bien en un linux sin lázarus instalado?

A provechamos para responder 2 preguntas, ya que antes preguntaron por ahí las librerías que usaban las aplicaciones de lazarus.

Compilado con la opcion de "Enlazar pequeña" el programa del sudoku utiliza estas librerias.
Código:

linux-gate.so.1
libX11.so.6
libgdk_pixbuf-2.0.so.0
libgtk-x11-2.0.so.0
libgdk-x11-2.0.so.0
libgobject-2.0.so.0
libglib-2.0.so.0
libgthread-2.0.so.0
libgmodule-2.0.so.0
libpango-1.0.so.0
libpthread.so.0
libatk-1.0.so.0
libdl.so.2
libc.so.6
libXau.so.6
libXdmcp.so.6
libm.so.6
libpangocairo-1.0.so.0
libXfixes.so.3
libcairo.so.2
libfontconfig.so.1
libXext.so.6
libXrender.so.1
libXinerama.so.1
libXi.so.6
libXrandr.so.2
libXcursor.so.1
librt.so.1
/lib/ld-linux.so.2
libpangoft2-1.0.so.0
libfreetype.so.6
libz.so.1
libpng12.so.0
libexpat.so.1

Y compilado sin la opción "Enlazar pequeña" usa exactamente las mismas, eso si pasa de 7 Megas o 6 Megas ... tampoco es que quede muy "pequeña" :D :D :D

roman 23-04-2007 22:00:33

No entendí. ¿Cuál fue la respuesta?

// Saludos

seoane 23-04-2007 22:06:37

Cita:

Empezado por roman
No entendí. ¿Cuál fue la respuesta?

Tu preguntaste:
Cita:

Empezado por roman
¿Has probado, si el ejecutable corre bien en un linux sin lázarus instalado?

Si utilizan las mismas librerias, en principio, se podran ejecutar en los mismos sistemas. Asi que si una aplicacion compilada sin esa opcion puede ejecutarse sin estar lazarus instalado, supongo que una compilada con esa opcion tambien lo hara. No tengo ningun linux sin lazarus para probar, pero mi razonamiento me parece correcto, ¿o estoy equivocado?

roman 23-04-2007 22:09:10

Supongo que sí. ¿Cómo haces para saber las librerías que usa?

// Saludos

seoane 23-04-2007 22:15:28

Cita:

Empezado por roman
¿Cómo haces para saber las librerías que usa?

Usando el comando ldd
Cita:

Empezado por Pagina man
NAME
ldd - print shared library dependencies

SYNOPSIS
ldd [OPTION]... FILE...

DESCRIPTION
ldd prints the shared libraries required by each program or shared
library specified on the command line.

Por otro lado, podemos probar, Aquí dejo el programa del sudoku compilado con la opción "Enlazar pequeña" y gtk2. Ahora alguien sin lazarus instalado puede hacer la prueba :)
http://rapidshare.com/files/27544176/sudoku.zip.html

roman 23-04-2007 22:23:37

Estaba a punto de decirte que iba a hacer esa prueba, pero en cierta forma, no tiene mucho sentido. Es que estoy seguro que no va a correr, pero no porque esté o no lázarus instalado, sino que muchas de esas librerías son requeridas por el propio lazarus. En algunos sistemas ya estarán y en otros no, dependiendo de qué cosas tengamos ya instaladas.

Me confunde un poco este tema. Es que, de entrada, si hay una opción "haz el ejecutable más pequeño" es que debe haber alguna desventaja, o sino, ¿por qué no se usa como opción por defecto, o mejor dicho, por qué si quiera existe el enlazado grande? Por ello preguntaba lo de si sería similar al delphi.

// Saludos

seoane 23-04-2007 23:15:47

Cita:

Empezado por roman
Me confunde un poco este tema. Es que, de entrada, si hay una opción "haz el ejecutable más pequeño" es que debe haber alguna desventaja, o sino, ¿por qué no se usa como opción por defecto, o mejor dicho, por qué si quiera existe el enlazado grande? Por ello preguntaba lo de si sería similar al delphi.

Lo que hace es usar la opción -XX de freepascal, que al parecer activa la directiva FPC_LINK_SMART, que me supongo que, y ya estoy suponiendo mucho :p , que utiliza algún tipo de optimización a la hora de compilar.

Por cierto usando strip, si que podemos reducir el tamaño del ejecutable. El programa del sudoku baja de 6 a 2 Megas.
Código:

strip -s sudoku

seoane 23-04-2007 23:21:07

En el wiki de lazarus aclaran lo del Smart link
Cita:

Smartlinking

The base principle of smartlinking is simple and commonly known: don't link in what is not used. This of course has a good effect on binary size.

However the compiler is merely a program, and doesn't have a magic crystal ball to see what is used, so the base implementation is more like this
The compiler finely divides the code up in so called "sections".
Then basically the linker determines what sections are used using the rule "if no label in the section is referenced, it can be removed.

There are some problems with this simplistic view:
virtual methods may be implicitely called via their VMTs. The GNU linker can't trace call sequences through these VMTs, so they must all be linked in;
tables for resource strings reference every string constant, and thus all string constants are linked in (one reason for sysutils being big).
symbols that approachable from the outside of the binary (this is possible for non library ELF binaries too) must be kept. This last limitation is necessary to e.g. avoid stripping exported functions from shared libraries..
Another such pain point are published functions and properties. References to published functions/properties can be constructed on the fly using string operations, and the compiler can't trace them. This is one of the downsides of reflection.
Published properties and methods can be resolved by creating the symbolnames using stringmanipulation, and must therefore be linked in if the class is referenced anywhere. Published code might in turn call private/protected/public code and thus a fairly large inclusion.

Another important sideeffect that is logical, but often forgotten is that this algoritm will link in everything referenced in the initialization and finalization parts of units, even if no functionality from those units are used. So be careful what you USE.

Anyway, most problems using smartlinking stem from the fact that for the smallest result FPC generally requires "compile with smartlinking" to be on WHEN COMPILING EACH AND EVERY UNIT, EVEN THE RTL

The reason for this is simple. LD only could "smart" link units that were the size of an entire .o file until fairly recently. This means that for each symbol a separate .o file must be crafted. (and then these tens of thousands of .o files are archived in .a files). This is a time (and linker memory) consuming task, thus it is optional, and is only turned on for release versions, not for snapshots. Often people having problems with smartlinking use a snapshot that contains RTL/FCL etc that aren't compiled with smartlinking on. Only solution is to recompile the source with smartlinking (-CX) on. See buildfaq for more info.

In the future this will be improved when the compiler will emit smartlinking code by default, at least for the main targets. This is made possible by two distinct developments. First, the GNU linker LD now can smartlink more finely grained (at least on Unix) using --gc-sections, second the arrival of the FPC internal linker (in the 2.1.1 branch) for all working Windows platforms (wince/win32/win64). The smartlinking using LD --gc-sections still has a lot of problems because the exact assembler layout and numerous details with respect to tables must be researched, we often run into the typical problem with GNU development software here, the tools are barely tested (or sometimes not even implemented, see DWARF standard) outside what GCC uses/stresses.

The internal linker can now smartlink Lazarus (17 seconds for a full smartlink on my Athlon64 3700+ using about 250MB memory) which is quite well, but is windows only and 2.1.1 for now. The internal linker also opens the door to more advanced smartlinking that requires Pascal specific knowledge, like leaving out unused virtual methods (20% code size on Lazarus examples, 5% on the Lazarus IDE as a rough first estimate), and being smarter about unused resourcestrings. This is all still in alpha, and above numbers are probably too optimistic, since Lazarus is not working with these optimizations yet.
Enlace al wiki: http://wiki.lazarus.freepascal.org/Size_Matters

roman 23-04-2007 23:55:57

Muy interesante lo que citas. No termina de convencerme del todo su "defensa" de ejecutables grandes :D pero ciertamente da puntos a pensar e ilustra lo que sucede.

Me encantó esta frase:

Cita:

The whole UPX cult is a funny thing that originates in a mindless pursuit of minimal binary sizes
:D

// Saludos

davidvs 15-05-2007 20:03:13

Corriendo perfectamente!!
 
Cita:

Empezado por seoane
Usando el comando ldd


Por otro lado, podemos probar, Aquí dejo el programa del sudoku compilado con la opción "Enlazar pequeña" y gtk2. Ahora alguien sin lazarus instalado puede hacer la prueba :)
http://rapidshare.com/files/27544176/sudoku.zip.html

Hola a todos, aprovecho la ocasion para estrenarme en el foro!!

Para vuestra informacion, el programa funciona perfectamente en una Ubuntu 7.04 recien instalada! (eso si, el ejecutable es insultantemente enorme -¿podria ser ke llevara todas las librerias compiladas a dentro????)


La franja horaria es GMT +2. Ahora son las 02:30:52.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi