3 votos

¿Se puede hacer qrencode portable para que funcione en MacOS recovery?


esta pregunta fue resuelta y los detalles están al final

pregunta:

Quiero imprimir un qrcode a terminal en Mac Recovery. Mi proceso termina necesitando bibliotecas enlazadas dinámicas.

En Big Sur, qrencode de homebrew está bien con golang para llamar al cmd:

echo 'http://www.google.com' | qrencode -o - -t UTF8

el resultado es el siguiente: enter image description here

A continuación copio el qrencode al usb-stick desde el sistema: /usr/local/bin/qrencode

Pero si ejecuto qrencode desde Recovery, hay errores:

enter image description here

No estoy seguro de cómo gestionar estas dependencias en dyld almacenados en /usr/local/Cellar

El enlace fuente qrencode es : https://fukuchi.org/works/qrencode/index.html.en

No sé cómo compilar para MacOS con todas las dependencias para hacer de esto una aplicación portable.

¿Existe alguna guía o proceso que pueda adaptar para ello?

2 votos

Esperemos que alguien ha trabajado en un problema similar y no tiene que copiar todas las librerías a USB y luego volver a vincular a una ruta relativa como esta persona describe.

0 votos

Hace este comando: DYLD_LIBRARY_PATH=/usr/local/Cellar/qrencode/4.1.1/lib qrencode/4.1.1/bin/qrencode ¿Trabajo? Si ese es el caso, puede crear un alias en su .bashrc o .zshrc archivo.

1 votos

@bmike He leído el enlace y hacer como eso, y funciona bien, ¡Gracias!

1voto

Jacky Smith Puntos 3

Sigue el enlace de @bmike, yo lo hice:

1.Instalar qrencode en un escritorio mac normal por :

brew install qrencode

ahora puedes usar qrencode en este mac bien

2.Encuentra dónde está el qrencode :

find / -name "qrencode"

obtener la ruta es : /usr/local/Cellar/qrencode/4.1.1/bin/qrencode

open /usr/local/Cellar/qrencode/4.1.1

puede ver el directorio: bin , lib

3.Inserte un almacenamiento usb llamado: AAA , mkdir a dir /Volumes/AAA/qr y copiar el bin y lib a la misma

4.Ahora pon el usb en el segundo escritorio de mac osx donde qrencode no esta instalado por brew antes,(segundo mac tal vez no sea necesario ,pero es bueno para repect los errores y confirmar que resolviste los errores, mac virtual es una buena opcion)

cd /Volumes/AAA/qr

ejecutar el qrencode por :

bin/qrencode

verá el error como la pregunta.

5.Ahora usted puede el error como: dyld: Biblioteca no cargada: /usr/local/Cellar/qrencode/4.1.1/lib/libqrencode.4.dylib

podemos cambiar la ruta de qrencode para encontrar dylib:

   install_name_tool -change /usr/local/Cellar/qrencode/4.1.1/lib/libqrencode.4.dylib "@executable_path/../lib/libqrencode.4.dylib" bin/qrencode

tal vez este shell mac requerirá xcode-commandline para instalar para ejecutar install_name_tool ,si no se instala que, puede instalarlo como el shell requiere

después de eso, puede ejecutar qrencode de nuevo:

 bin/qrencode

Volverá a dar error para otro dylib, así que cámbialo de nuevo:

install_name_tool -change /usr/local/opt/libpng/lib/libpng16.16.dylib "@executable_path/../lib/libpng16.16.dylib" bin/qrencode

porque cuando copiamos qrenocde dir , nos olvidamos de copiar /usr/local/opt/libpng/lib/libpng16.16.dylib a /Volumes/AAA/qr/lib, así que tenemos que insertar usb a primera mac, y ejecutar :

cp /usr/local/opt/libpng/lib/libpng16.16.dylib /Volumes/AAA/qr/lib/

ahora pon el usb de nuevo en el segundo mac,ejecuta qrencode de nuevo se ejecutara bien e imprimira el uso de qrencode , todo esta hecho:

cd /Volumes/AAA/qr
bin/qrencode

Si qrencode está en bin dir y *.dylib está en lib dir, como hice yo, @executable_path/../lib está bien, pero si qrencode path es /Volumes/AAA/qr/qrencode y *.dylib está en /Volumes/AAA/qr/lib/, @executable_path/../lib debería editarse a @executable_path/lib, probé dos situaciones y lo entendí.

6.Por último , puede ejecutar qrencode en cualquier escritorio mac o mod de recuperación sin errores:

/Volumes/AAA/qr/bin/qrencode

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X