Estaba probando algún ejecutable c++ en mi viejo smartphone (Android 8, sin Root). Aquí está la descripción del problema:
Tengo tanto Termux como Cxxdroid instalados en ese teléfono. Y en termux tengo instalado clang.
Entremos en Termux.
cd /storage/emulated/0/c++ # current dir is now c++ which sits in the internal storage
ls # this prints 'hello.cpp', a simple hello world program. let's compile it.
clang++ hello.cxx -o hello
ls # this prints two files now, hello and hello.cxx. let's execute hello.
./hello # prints: bash: ./hello: Permission denied. let's grant permission.
chmod +x hello
./hello # prints: bash: ./hello: Permission denied
Como puedes ver, no hay manera de que pueda ejecutar hello en el directorio c++. Sé que si muevo hola en $HOME y lo ejecuto, funcionaría de inmediato. Pero ese no es el caso.
Ahora, entremos en Cxxdroid. Entremos en 'Terminal' desde el menú de la izquierda. Vamos a ejecutar nuestro binario hola.
cd /storage/emulated/0/c++
ls # contains two files. hello.cxx and hello (which is the binary generated from Termux clang). let's run it.
./hello # prints 'Hello World'
¿Lo ves? El mismo binario no se ejecuta en Termux pero se ejecuta enseguida en Cxxdroid. ¿Por qué? ¿Qué técnica está usando Cxxdroid bajo el capó? El permiso del binario hello tanto para Termux como para Cxxdroid es:
ls -l hello # prints: -rw-rw---- 1 root everybody 115588 Apr 25 00:32 hello
Se agradece cualquier ayuda.