Lanzador Oricutron en LMDE3.

Avatar de Usuario
Chema
Mensajes: 2219
Registrado: 21 Jun 2012 20:13
Ubicación: Gijón
Agradecido : 1767 veces
Agradecimiento recibido: 577 veces
Contactar:

Re: Lanzador Oricutron en LMDE3.

Mensajepor Chema » 23 Abr 2019 00:15

Último mensaje de la página anterior:

Jejeje... BlackHole al rescate :) Siento haber estado ausente, pero hace tiempo que no manejo Linux (bueno, sí, pero muy lateralmente y como mero usuario de cosas concretas) y no me parece que fuese a aportar nada útil. Sin embargo, lo primero que me vino a la cabeza es que libmagic estuviese identificando mal el archivo, porque noté la discrepancia en la salida del comando file, pero claramente el programa podía ejecutarse.

Lo que pasa es que me pareció de perogrullo (¿se escribe así?) y tampoco estaba seguro ni tenía una explicación lógica (ni, por supuesto, una solución).

Me parece un poco raro, de todas formas, que no puedas saltarte la identificación del archivo con libmagic cuando creas un lanzador... igual puedes lanzar una consola con un comando o directamente crearte un script shell que llame a ./oricutron o algo similar... Si nada más funciona. Algo como:

Código: Seleccionar todo

#!/bin/sh
./oricutron


lo llamas lanzar_oricutron y eso ya lo ejecutas con un clic... ¿no funcionaría?

BlackHole
Mensajes: 1064
Registrado: 03 Ago 2011 23:07
Ubicación: Aluche, Madrid
Agradecido : 9 veces
Agradecimiento recibido: 187 veces

Re: Lanzador Oricutron en LMDE3.

Mensajepor BlackHole » 25 Abr 2019 10:40

Silicebit: Al final, ¿en qué quedó la cosa? ¿Has tenido tiempo de echarle un vistazo?

Avatar de Usuario
Silicebit
Mensajes: 1494
Registrado: 16 May 2011 21:13
Ubicación: La buhardilla del silicio.
Agradecido : 99 veces
Agradecimiento recibido: 201 veces
Contactar:

Re: Lanzador Oricutron en LMDE3.

Mensajepor Silicebit » 25 Abr 2019 19:28

De momento no he tenido tiempo para meterme a fondo, pero hay un comando de consola que es una maravilla para decirte todo sobre un fichero ELF. El comando es 'readelf', este comando tiene varios modificadores, para ver el 'número mágico' se usa readelf -h <nombre de fichero elf>

Aquí se puede leer más sobre este comando: https://sourceware.org/binutils/docs/bi ... adelf.html

A ver si saco algo de tiempo y me pongo con ello ...
El 6809 es el Rolls-Royce de los 8bits, el 6502 es el Mercedes, y el Z80 el SEAT 850. Sorry, but... I think different. :-P -0r1c -m3s3x -t4nd1 -cbmja YouTube

BlackHole
Mensajes: 1064
Registrado: 03 Ago 2011 23:07
Ubicación: Aluche, Madrid
Agradecido : 9 veces
Agradecimiento recibido: 187 veces

Re: Lanzador Oricutron en LMDE3.

Mensajepor BlackHole » 25 Abr 2019 21:41

La solución más rápida va a ser que rehagas el Makefile poniendo "-no-pie" donde haga falta (típicamente en CCFLAGS y LDFLAGS) y recompiles.

Avatar de Usuario
overCLK
Mensajes: 247
Registrado: 26 Ene 2017 12:26
Agradecido : 77 veces
Agradecimiento recibido: 109 veces

Re: Lanzador Oricutron en LMDE3.

Mensajepor overCLK » 25 Abr 2019 23:05

Una idea que se me ocurre para intentar ver qué pasa realmente es que cambies el .desktop para redirigir la salida estándar y de error a un fichero. Algo como esto debería funcionar. Cambia:

Código: Seleccionar todo

Exec=/home/Oricutron_V12/oricutron


por

Código: Seleccionar todo

Exec=bash -c '/home/Oricutron_V12/oricutron >/tmp/oricutron.log 2>&1'


a ver si en ese fichero /tmp/oricutron.log vemos cual es el verdadero problema.
Imagen

Avatar de Usuario
Silicebit
Mensajes: 1494
Registrado: 16 May 2011 21:13
Ubicación: La buhardilla del silicio.
Agradecido : 99 veces
Agradecimiento recibido: 201 veces
Contactar:

Re: Lanzador Oricutron en LMDE3.

Mensajepor Silicebit » 27 Abr 2019 21:45

Mañana domingo por la mañana me pondré con ello, a ver que se saca en claro...
El 6809 es el Rolls-Royce de los 8bits, el 6502 es el Mercedes, y el Z80 el SEAT 850. Sorry, but... I think different. :-P -0r1c -m3s3x -t4nd1 -cbmja YouTube

BlackHole
Mensajes: 1064
Registrado: 03 Ago 2011 23:07
Ubicación: Aluche, Madrid
Agradecido : 9 veces
Agradecimiento recibido: 187 veces

Re: Lanzador Oricutron en LMDE3.

Mensajepor BlackHole » 28 Abr 2019 02:35

He probado a arrancar la máquina que tenía con Ubuntu 18.10 (la tengo apagada, no suelo usarla) pero he tenido que instalar los paquetes gcc, make, libsdl2-dev y libgtk-3-dev para poder compilar el programa en mi sistema. A la primera no iba bien, he tenido que editar el Makefile para quitar el comentario # de la línea SDL_LIB=sdl2. Por cierto, me he bajado las fuentes del Github.... algo habrá hecho porque hay cambios de ayer mismo. Revísalo.

Al ir rápido y acordarme de memoria, me equivoqué más arriba en un par de cosillas: el comando para actualizar el sistema es "sudo apt upgrade" y no update. Las líneas a editar en el Makefile son CFLAGS y LFLAGS, no CCFLAGS y LDFLAGS. Estaba pensando en los comandos y no en las etiquetas. Efectivamente "-no-pie" en ambos, genera un ejecutable de los que te servirían. Aunque al actualizar el sistema me metió el parche del libmagic del que hablamos el otro día (en mi caso es 100% Ubuntu pero en la distribución Mint podría ser diferente).

Con GCC 8.2, como se compila con la opción -Wall (all warnings) da varios avisos de que en el código no se comprueban los resultados de diversas operaciones con ficheros, como crear temporales, carpetas o cambiar de carpeta, que podrían fallar si por ejemplo a alguien le da por desmontar una partición con el emulador arrancado (en Unix no se puede presuponer que siempre van a estar ahí disponibles), pero por lo demás parece que se deja compilar. No lo pude probar del todo, porque entré remotamente por SSH y no tenía gráficos, y tampoco me bajé el paquete de las ROM del Oric y se quejaba al inicio.

En última instancia conservo el ejecutable por si lo quieres. Gzipeado son 170 KB.

Avatar de Usuario
Silicebit
Mensajes: 1494
Registrado: 16 May 2011 21:13
Ubicación: La buhardilla del silicio.
Agradecido : 99 veces
Agradecimiento recibido: 201 veces
Contactar:

Re: Lanzador Oricutron en LMDE3.

Mensajepor Silicebit » 29 Abr 2019 21:36

Muchas gracias BlackHole.

Editando el Makefile y poniendo '-no-pie' en CFLAGS y LFLAGS, hace que el ejecutable ahora funcione al hacer doble clic sobre él en la GUI. Ahora el sistema le asigna el icono de los engranajes.

Me tiene intrigado el por qué el ejecutable con un punto aleatorio de entrada funciona con el terminal, y no con la GUI. Pero aún no ha acabado la cosa, sigue sin funcionar el lanzador (acceso directo) al ejecutable.

Empiezo a pensar que Cinnamon y Mate, dos GUIs creo que relativamente recientes, tienen algunos bugs, puesto que lo he probado sobre Ubuntu 18.04 LTS con Mate, y tampoco funcionan los lanzadores.

Lo que ha dicho overCLK para crear un log no funciona...
El 6809 es el Rolls-Royce de los 8bits, el 6502 es el Mercedes, y el Z80 el SEAT 850. Sorry, but... I think different. :-P -0r1c -m3s3x -t4nd1 -cbmja YouTube

Avatar de Usuario
Chema
Mensajes: 2219
Registrado: 21 Jun 2012 20:13
Ubicación: Gijón
Agradecido : 1767 veces
Agradecimiento recibido: 577 veces
Contactar:

Re: Lanzador Oricutron en LMDE3.

Mensajepor Chema » 29 Abr 2019 23:07

Probaste mi idea del shell script?

Avatar de Usuario
Silicebit
Mensajes: 1494
Registrado: 16 May 2011 21:13
Ubicación: La buhardilla del silicio.
Agradecido : 99 veces
Agradecimiento recibido: 201 veces
Contactar:

Re: Lanzador Oricutron en LMDE3.

Mensajepor Silicebit » 30 Abr 2019 00:47

Pues no, lo pruebo mañana y te digo.
El 6809 es el Rolls-Royce de los 8bits, el 6502 es el Mercedes, y el Z80 el SEAT 850. Sorry, but... I think different. :-P -0r1c -m3s3x -t4nd1 -cbmja YouTube

BlackHole
Mensajes: 1064
Registrado: 03 Ago 2011 23:07
Ubicación: Aluche, Madrid
Agradecido : 9 veces
Agradecimiento recibido: 187 veces

Re: Lanzador Oricutron en LMDE3.

Mensajepor BlackHole » 30 Abr 2019 01:07

Me vas a hacer enchufar el monitor a ese equipo -rofl
Tengo que averiguar cómo hacer que TeamViewer muestre un escritorio cuando está sin monitor. Solo consigo que me salga todo en negro.
También tengo que probar el Ubuntu 19.04 que salió hace unos días...

Avatar de Usuario
overCLK
Mensajes: 247
Registrado: 26 Ene 2017 12:26
Agradecido : 77 veces
Agradecimiento recibido: 109 veces

Re: Lanzador Oricutron en LMDE3.

Mensajepor overCLK » 30 Abr 2019 09:48

Silicebit escribió:Lo que ha dicho overCLK para crear un log no funciona...


Bueno, lo que ha dicho overCLK lo probó antes con un lanzador de los que vienen con el sistema (el del Totem para ser más específicos) y sí funciona redirigendo la salida estándar y de error del comando al fichero (al menos en una Ubuntu). :wink:

Entiendo que cuando dices que no funciona, quieres decir que no escribe nada en /tmp/oricutron.log, ¿no? ¿Crea el fichero al menos? Yo probaría a poner otro comando que si sepamos que escribe a la salida estándar, como un echo "hola" para asegurarnos de que todo está escrito como debe.

Antes los entornos gráficos solían redirigir la salida de error a algún sitio (como el fichero .xsession-errors en el HOME del usuario). ¿Has mirado si aparece ahí algo significativo cuando intentas ejecutar el lanzador del Oricutron?
Imagen

Avatar de Usuario
Silicebit
Mensajes: 1494
Registrado: 16 May 2011 21:13
Ubicación: La buhardilla del silicio.
Agradecido : 99 veces
Agradecimiento recibido: 201 veces
Contactar:

Re: Lanzador Oricutron en LMDE3.

Mensajepor Silicebit » 05 May 2019 20:11

Chema escribió:Probaste mi idea del shell script?

Lo he probado y no me va, pero no sé si lo he hecho bien. De todas formas compilando con la opción (-no-pie) en el makefile, Oricutron se ejecuta sin problemas al hacer doble clic sobre él, por lo que un problema solucionado.

overCLK escribió:Bueno, lo que ha dicho overCLK lo probó antes con un lanzador de los que vienen con el sistema (el del Totem para ser más específicos) y sí funciona redirigendo la salida estándar y de error del comando al fichero (al menos en una Ubuntu). :wink:

Entiendo que cuando dices que no funciona, quieres decir que no escribe nada en /tmp/oricutron.log, ¿no? ¿Crea el fichero al menos? Yo probaría a poner otro comando que si sepamos que escribe a la salida estándar, como un echo "hola" para asegurarnos de que todo está escrito como debe.

Ni siquiera crea el fichero en el directorio.

Este Linux Mint no es el de siempre, a ver, Ubuntu coge el núcleo de Debian y lo tunea para hacer su distro, y Linux Mint coge el núcleo de Ubuntu y lo vuelve a tunear para hacer la suya. A raiz de la noticia de que Canonical dejaba de desarrollar y soportar Unity (su GUI estrella), y volvía a Genome, a los de Mint les entraron las diarreas del terror porque creyeron que Canonical iba a dejar de desarrollar y mantener su distro, al menos para las masas, y han sacado una distro "suya" basada en el núcleo Debian puro y duro al que le han endosado la GUI Cinnamon. ¡Vamos, que el núcleo casi va más pelado que el culo de un mandril!

Se supone que el kernel va un poquitín más rápido que el de Ubuntu, pero a cambio es una distro màs arisca con el usuario, sobre todo si este tiene poca experiencia en Linux. Yo pienso, es mi parecer, que Cinnamon debe pulirse un poco aún.

Podría volver a Ubuntu, que es una distro cojonuda por cierto, pero LMDE3 me gusta y me obliga a aprender, que es una cosa que quiero.

overCLK escribió:Antes los entornos gráficos solían redirigir la salida de error a algún sitio (como el fichero .xsession-errors en el HOME del usuario). ¿Has mirado si aparece ahí algo significativo cuando intentas ejecutar el lanzador del Oricutron?

Lo he mirado y no queda registrado nada sobre el lanzador. :(
El 6809 es el Rolls-Royce de los 8bits, el 6502 es el Mercedes, y el Z80 el SEAT 850. Sorry, but... I think different. :-P -0r1c -m3s3x -t4nd1 -cbmja YouTube

Avatar de Usuario
Silicebit
Mensajes: 1494
Registrado: 16 May 2011 21:13
Ubicación: La buhardilla del silicio.
Agradecido : 99 veces
Agradecimiento recibido: 201 veces
Contactar:

Re: Lanzador Oricutron en LMDE3.

Mensajepor Silicebit » 05 May 2019 20:18

BlackHole escribió:Hola. Siento contestar siempre a última hora del día, es cuando reviso los foros. Un objeto compartido es un binario que puede ser linkado a otros proyectos y seguir funcionando, a través de las interfaces que tenga abiertas hacia el exterior, quizás clases con métodos públicos. Un ejecutable es un todo autocontenido y no puede ser linkado en otros proyectos. Un objeto compartido técnicamente es una librería biblioteca, pero nada impide que pueda funcionar como un ejecutable, ya que has podido comprobar que llamándolo desde el terminal funciona sin problemas. Otra literatura habla de que los objetos compartidos usan un espacio aleatorio de direcciones cada vez que son llamados, en vez de tenerlo fijo como los ejecutables clásicos, y son menos proclives a ser hackeados desde fuera, y que distribuciones como Fedora 23 y Ubuntu 17.10 ya traen todo con objetos compartidos, por seguridad.

Ambos están compilados dinámicamente, es decir, usan bibliotecas externas del sistema, para ahorrar código que puede ser llamado desde el módulo principal. También podrían estar linkados estáticamente, para que funcionen siempre independientemente de lo que haya instalado, sin dependencias externas, a costa de que el binario se incrementase enormemente (y mucho), pero creo que el problema no va por ahí.

Respuestas que he encontrado en Stack Exchange hablan de un bug en determinadas distribuciones, con un mensaje "No hay aplicación instalada para archivos de biblioteca compartida", que es básicamente lo que le pasa a Silicebit. Las aplicaciones son reconocidas a través de un "número mágico" o "firma de fichero", que es como se conoce al conjunto único de los primeros bytes de un fichero que puedan identificar qué tipo de fichero es y cómo debe ser tratado. Hace un tiempo se gestionaba con una lista de texto (/usr/local/share/misc/magic), modificable por un superusuario, hasta que por su longitud pasó a gestionarse con la librería biblioteca libmagic.

Pues resulta que existe una regresión entre los valores almacenados en libmagic y un cambio en las banderas por defecto de compilación del GCC. Los ejecutables construidos por GCC son ahora ELF PIE (Positional Independent Executable) por defecto. No sé si podrás hacer un "sudo apt-get update" para ver si por casualidad han actualizado el comando file (y libmagic) a la versión más actual. La versión 5.34 estropeó las cosas e identificaba a los ejecutables compilados con los últimos GCC como "bibliotecas compartidas", ese error está presente en Ubuntu 18.10 y todas las distribuciones que parten de ella. Fue arreglado en la versión 5.36 del comando file. Se resume en la siguiente tabla:

Código: Seleccionar todo

Executable generation        ELF type  DT_FLAGS_1  DF_1_PIE  chdmod +x      file 5.36
---------------------------  --------  ----------  --------  -------------- --------------
gcc -fpie -pie               ET_DYN    y           y         y              pie executable
gcc -fno-pie -no-pie         ET_EXEC   n           n         y              executable
gcc -shared                  ET_DYN    n           n         y              pie executable
gcc -shared                  ET_DYN    n           n         n              shared object
ld                           ET_EXEC   n           n         y              executable
ld -pie --dynamic-linker     ET_DYN    y           y         y              pie executable
ld -pie --no-dynamic-linker  ET_DYN    y           y         y              pie executable

Si la actualización del sistema no te lo soluciona, puedes intentar meter con calzador la opción "-no-pie" en las opciones de enlazado (link) en el GCC dentro del script del Makefile con el que hayas compilado el oricutron, a ver si por casualidad te sirve.

Una explicación soberbia con la que he aprendido unas cuantas cosas. ¡Me ha gustado! ¡Gracias BlackHole! -thumbup
El 6809 es el Rolls-Royce de los 8bits, el 6502 es el Mercedes, y el Z80 el SEAT 850. Sorry, but... I think different. :-P -0r1c -m3s3x -t4nd1 -cbmja YouTube

BlackHole
Mensajes: 1064
Registrado: 03 Ago 2011 23:07
Ubicación: Aluche, Madrid
Agradecido : 9 veces
Agradecimiento recibido: 187 veces

Re: Lanzador Oricutron en LMDE3.

Mensajepor BlackHole » 06 May 2019 02:18

Pero... pero... si yo no sé informática.


Volver a “Sistemas Operativos”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado