Lanzador Oricutron en LMDE3.

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

Lanzador Oricutron en LMDE3.

Mensajepor Silicebit » 19 Abr 2019 12:34

Tengo instalado Linux Mint Debian Edition 3 (LMDE3 Cindy) con Cinnamon. Ayer compilé el Oricutron V1.2 y me funciona perfectamente si lo ejecuto desde el terminal, pero no se abre si lo ejecuto desde un lanzador. He mirado y remirado y el lanzador está bien creado, :-D pero no hay manera. ¿Algún gurú de Linux que sepa el por qué?

El código del lanzador es este:

Código: Seleccionar todo

[Desktop Entry]
Encoding=UTF-8
Name=Oricutron V12
Comment=Emulador ordenadores Oric
Type=Application
Exec=/home/Oricutron_V12/oricutron
Icon=/home/Oricutron_V12/images/Oricutron.bmp
Terminal=false
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
ron
Mensajes: 18440
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 1608 veces
Agradecimiento recibido: 1337 veces

Re: Lanzador Oricutron en LMDE3.

Mensajepor ron » 19 Abr 2019 12:46

Hey Walken. Pues no sabría decirte, por defecto no hay lanzador. Te va a tocar invocar el emu con un ./oricutron pero SI puedes crearte un lanzador desde Mate, Cinnamon, XFCE e incluso LXDE.

Creo que tu problema es que estás ignorando el directorio usuario dentro de home. Prueba a cambiar en EXEC e ICON.

/home/usuario/Oricutron_V12/oricutron

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

Re: Lanzador Oricutron en LMDE3.

Mensajepor Silicebit » 19 Abr 2019 13:01

Se me olvidó decir que es LMDE3 con Cinnamon.

/home/usuario/Oricutron_V12/oricutron

La carpeta del Oricutron está dentro de la carpeta home directamente, la ruta del ejecutable es esta: /home/Oricutron_V12/oricutron

Si lo ejecuto desde dentro de su carpeta en el terminal con ./oricutron, funciona, pero desde un lanzador no hay co#ones. -banghead
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
ron
Mensajes: 18440
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 1608 veces
Agradecimiento recibido: 1337 veces

Re: Lanzador Oricutron en LMDE3.

Mensajepor ron » 19 Abr 2019 13:05

Parece ser que lo que te pasa se arregla con una ñapa:
Aquí se puede leer: https://unix.stackexchange.com/a/494913

Right click on the menu icon (default Mint menu - left bottom corner) --> configure --> Menu tab --> Open the menu editor --> New Item (chose category for your app)
You have created new launcher in main menu.
And now, open default Mint menu, find your app -> right click on it and "add to desktop".

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

Re: Lanzador Oricutron en LMDE3.

Mensajepor Silicebit » 19 Abr 2019 13:35

Gracias ron, eso también lo he probado y sigue sin abrirse. También le he dado permisos al programa y al archivo de configuración y nada. No sé por qué no se abre, en Ubuntu el lanzador funcionaba perfectamente. :(
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
ron
Mensajes: 18440
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 1608 veces
Agradecimiento recibido: 1337 veces

Re: Lanzador Oricutron en LMDE3.

Mensajepor ron » 19 Abr 2019 13:42

Pues pásame con que flags has compilado.Si lo has hecho por defecto no me pases nada. Hay binarios que dependiendo como se linkan funcionan directamente con doble click, ¿ a qué es eso lo que te pasa ?, ¿ que cuando le metes doble click al bin no se abre ?

Avatar de Usuario
ron
Mensajes: 18440
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 1608 veces
Agradecimiento recibido: 1337 veces

Re: Lanzador Oricutron en LMDE3.

Mensajepor ron » 19 Abr 2019 13:47


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

Re: Lanzador Oricutron en LMDE3.

Mensajepor Silicebit » 19 Abr 2019 13:52

Pues sí, seguro que es eso. Lo compilé así: make PLATFORM=linux
Efectivamente cuando hago doble clic sobre el binario no se ejecuta, linux me pide el programa con el que hay que abrirlo.
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: 1090
Registrado: 03 Ago 2011 23:07
Ubicación: Aluche, Madrid
Agradecido : 9 veces
Agradecimiento recibido: 212 veces

Re: Lanzador Oricutron en LMDE3.

Mensajepor BlackHole » 20 Abr 2019 10:06

Desde un gestor de archivos (¿Nautilus? no sé cuál trae Mint) si haces doble clic sobre el icono del fichero, ¿se ejecuta?
Estoy presuponiendo obviamente que el fichero "oricutron" tiene el flag +x en sus permisos.
¿Es el fichero "oricutron" un binario o un script? ¿Cuál es la salida del comando "file /home/Oricutron_V12/oricutron"?
¿El programa tiene alguna interacción con el usuario en modo consola antes de lanzar la parte gráfica?

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

Re: Lanzador Oricutron en LMDE3.

Mensajepor Silicebit » 20 Abr 2019 12:14

BlackHole escribió:Desde un gestor de archivos (¿Nautilus? no sé cuál trae Mint) si haces doble clic sobre el icono del fichero, ¿se ejecuta?

El gestor de Cinnamon se llama 'Nemo' y si hago doble clic sobre el icono del fichero me sale una ventana como esta:

Captura de pantalla de 2019-04-20 11-02-18.png
Captura de pantalla de 2019-04-20 11-02-18.png (26.04 KiB) Visto 430 veces


BlackHole escribió:Estoy presuponiendo obviamente que el fichero "oricutron" tiene el flag +x en sus permisos.

Sí, así es. Adjunto dos capturas de pantalla, la primera son las propiedades del fichero por la GUI y la segunda el listado por el terminal:

Captura de pantalla de 2019-04-20 11-20-59.png
Captura de pantalla de 2019-04-20 11-20-59.png (25.28 KiB) Visto 430 veces

Captura de pantalla de 2019-04-20 11-22-19.png
Captura de pantalla de 2019-04-20 11-22-19.png (24.9 KiB) Visto 430 veces

BlackHole escribió:¿Es el fichero "oricutron" un binario o un script? ¿Cuál es la salida del comando "file /home/Oricutron_V12/oricutron"?

Es el fichero de salida del compilador, según el aspecto del icono que le asigna el sistema, parece ser un binario. Lo puedo ejecutar desde el terminal (la emulación del terminal) con ./oricutron.

Captura de pantalla de 2019-04-20 11-02-58.png
Captura de pantalla de 2019-04-20 11-02-58.png (14.17 KiB) Visto 430 veces

La salida del comando file es esta:

Código: Seleccionar todo

alf@toshiba-nb520 ~ $ file /home/Oricutron_V12/oricutron
/home/Oricutron_V12/oricutron: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=9de82b78036d8457f38055f29ce1f5adde0bafe2, not stripped

BlackHole escribió:¿El programa tiene alguna interacción con el usuario en modo consola antes de lanzar la parte gráfica?

No, antes de que salga la ventana de asignar un programa para abrirlo, no hace nada. Y si lo lanzo desde el terminal con ./oricutron aparece la ventana con el Oricutron corriendo directamente.

Captura de pantalla de 2019-04-20 11-48-42.png
Captura de pantalla de 2019-04-20 11-48-42.png (50.38 KiB) Visto 430 veces

He encontrado un binario ya compilado para Linux aquí: https://iss.sandacite.com/oricutron/
Este binario sí funciona al hacer doble clic sobre él, la salida que da al comando file es esta:

Código: Seleccionar todo

alf@toshiba-nb520 ~ $ file /home/Oricutron_V12/oricutron
/home/Oricutron_V12/oricutron: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=147e8b6555708c389a04d61dcc16174ea6092e49, stripped

Peeeero si creo un lanzador para él, sigue sin funcionar, cuando hago doble clic sobre el lanzador simplemente no pasa nada, nada se abre. ¡Manda eggs! -banghead
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

jltursan
Mensajes: 2563
Registrado: 20 Sep 2011 13:59
Agradecido : 173 veces
Agradecimiento recibido: 485 veces

Re: Lanzador Oricutron en LMDE3.

Mensajepor jltursan » 20 Abr 2019 14:07

¿Tienes algún otro gestor de ventanas disponible que no sea Cinnamon?, uno sencillote tipo LXDE o XFCE...

Avatar de Usuario
ron
Mensajes: 18440
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 1608 veces
Agradecimiento recibido: 1337 veces

Re: Lanzador Oricutron en LMDE3.

Mensajepor ron » 20 Abr 2019 17:20

hazle un strip a tu binario.

/home# strip oricutron

a ver que pasa.

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

Re: Lanzador Oricutron en LMDE3.

Mensajepor BlackHole » 20 Abr 2019 23:48

ron: No debería estar relacionado con el problema. Si no se ha hecho strip, simplemente el fichero conserva la información de debug y por eso es más grande, pero eso no debe afectar al funcionamiento del ejecutable.
Lo que veo diferente en las capturas es que el primer oricutron ocupa 1.498.624 bytes y el segundo 383.072 bytes. No sé si el segundo es el emulador compilado que encontró por ahí, o es que ya ha realizado el strip sobre el primero. Lo que me mosquean son los permisos del ejecutable y su fichero de configuración. Presupongo que el usuario que inicia la sesión en el escritorio es "alf" y pertenece al grupo "alf", no sé qué pinta root en los permisos del emulador, salvo que se compilase como superusuario. Yo probaría a cambiar el propietario y sus permisos:

sudo chown alf:alf oricutron
sudo chown alf:alf oricutron.cfg
sudo chmod 755 oricutron
sudo chmod 644 oricutron.cfg

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

Re: Lanzador Oricutron en LMDE3.

Mensajepor Silicebit » 22 Abr 2019 21:17

ron escribió:hazle un strip a tu binario.

/home# strip oricutron

a ver que pasa.

Como bien dice BlackHole, sólo elimina la información de debug, el fichero a empequeñecido, pero nada más, sigue igual.

BlackHole escribió:Lo que veo diferente en las capturas es que el primer oricutron ocupa 1.498.624 bytes y el segundo 383.072 bytes. No sé si el segundo es el emulador compilado que encontró por ahí, o es que ya ha realizado el strip sobre el primero. Lo que me mosquean son los permisos del ejecutable y su fichero de configuración. Presupongo que el usuario que inicia la sesión en el escritorio es "alf" y pertenece al grupo "alf", no sé qué pinta root en los permisos del emulador, salvo que se compilase como superusuario. Yo probaría a cambiar el propietario y sus permisos:

su chown alf:alf oricutron
su chown alf:alf oricutron.cfg
su chmod 755 oricutron
su chmod 644 oricutron.cfg

El segundo es el emulador compilado que encontré en la página que dije. Respecto a lo de los permisos, ya los he cambiado y recambiado mil veces y nada de nada.
Una cosa que me tiene mosqueado es que mientras que la salida que da el comando file a mi archivo compilado es esta:

Código: Seleccionar todo

alf@toshiba-nb520 ~ $ file /home/Oricutron_V12/oricutron
/home/Oricutron_V12/oricutron: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=9de82b78036d8457f38055f29ce1f5adde0bafe2, not stripped

La salida para el archivo que me bajé es la siguiente:

Código: Seleccionar todo

alf@toshiba-nb520 ~ $ file /home/Oricutron_V12/oricutron
/home/Oricutron_V12/oricutron: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=147e8b6555708c389a04d61dcc16174ea6092e49, stripped

¿Os dais cuen de la diferencia?

El mío, no se ejecuta con doble clic: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV)
El que me bajé y se puede ejecutar con doble clic: ELF 64-bit LSB executable, x86-64, version 1 (SYSV)

Además, el sistema le asigna iconos diferentes.

Captura de pantalla de 2019-04-22 14-15-57.png
Captura de pantalla de 2019-04-22 14-15-57.png (6.42 KiB) Visto 319 veces

El de la izquierda se ejecuta con doble clic, es el que me bajé, el de la derecha es el mío compilado y no se ejecuta con doble clic
Para mí que hay que meter alguna instrucción en la fuente para que se pueda hacer ejecutable con doble clic, ¿system (xxx)?
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: 1090
Registrado: 03 Ago 2011 23:07
Ubicación: Aluche, Madrid
Agradecido : 9 veces
Agradecimiento recibido: 212 veces

Re: Lanzador Oricutron en LMDE3.

Mensajepor BlackHole » 22 Abr 2019 23:49

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.

Avatar de Usuario
Chema
Mensajes: 2234
Registrado: 21 Jun 2012 20:13
Ubicación: Gijón
Agradecido : 1811 veces
Agradecimiento recibido: 584 veces
Contactar:

Re: Lanzador Oricutron en LMDE3.

Mensajepor Chema » 23 Abr 2019 00:15

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?


Volver a “Sistemas Operativos”

¿Quién está conectado?

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