2009-06-17 16 views
8

No es exactamente la programación relacionada ...permiso denegado el funcionamiento de mi propio programa (ubuntu)

He construido el programa, algunos OpenGL básica, a continuación, ejecutarlo y SH:/blabla permiso denegado. ¿Cómo puedo hacer ese desastre?

el programa sólo hace un cuadrado que gira y tengo ubuntu 9.4

Acabamos de descubrir que incluso int main() {} no funciona

+0

¿Cuáles son los permisos en el archivo del programa? –

+0

Pruebe chmod 777: P – KdgDev

+0

¿Cuál es exactamente el comando que está ingresando? – Svante

Respuesta

1

par de preguntas:

  1. Son los permisos establecidos correctamente en el archivo?
  2. ¿La ruta de acceso a cualquier intérprete está configurada correctamente?
+0

No sé de esas cosas ... solo sucede en la nueva computadora Tenía el mismo compilador del mismo ubuntu y allí simplemente ejecuta – csiz

6

¿Cómo la compila? ¿Puedes publicar el archivo MAKE? Si ejecuta

chmod +x myPorgram 
./myProgram 

algo cambia?

+0

Estoy compilando con bloques de código. Y no intenté con eso, intenté con sudo y todavía nada. – csiz

1

Aparte del archivo chmod + x mencionado anteriormente, otro problema podría ser una biblioteca faltante. Para comprobar las bibliotecas necesarias, el uso LDD:

$ ldd /bin/sh 
    linux-vdso.so.1 => (0x00007fffb43fe000) 
    libc.so.6 => /lib/libc.so.6 (0x00007fc4abe11000) 
    /lib64/ld-linux-x86-64.so.2 (0x00007fc4ac183000) 

Si una de estas líneas muestra una biblioteca que falta, usted sabrá lo que tiene que ser instalado antes de poder ejecutar su programa.

Otra posibilidad es si su programa es un script (shell, perl, python u otro programa basado en texto). La primera línea se ve así:

#!/usr/bin/perl 

Si no se encuentra ese archivo, obtendrá un error de permiso denegado.

+0

no es un ejecutable dinámico hmmm pero en la página de permisos está marcada la opción ejecutable y también hice el chmod + x en él ... Aunque dudo que haya bibliotecas adicionales necesarias para int main() {} – csiz

+0

"No es un ejecutable dinámico "¿?" ¿Puede mostrarnos cómo está compilando su programa? También haga un "archivo archivoexclusivo", esto debería decir algo como $ archivo/bin/bash /bin/bash: ELF Ejecutable de 64 bits de LSB, x86-64, versión 1 (SYSV), enlazado dinámicamente (usos compartidos libs), para GNU/Linux 2.6.15, stripped En cuanto a las bibliotecas adicionales, tener solo main() {} no significa nada, si se compiló con las librerías OpenGL, se requerirá que ejecuten el programa . –

+0

Estoy presionando el botón de compilación en bloques de código ... que funcionó en la otra computadora hasta ahora, también compilé sin bibliotecas vinculadas y no se ejecutó. La prueba de archivo: prueba: ELF 32 bits ejecutable LSB, Intel 80386, versión 1 (SYSV), vinculado dinámicamente (utiliza bibliotecas compartidas), para GNU/Linux 2.6.15, no eliminado – csiz

0

Intente ejecutar el comando con strace para rastrear las llamadas al sistema exitosas que realiza y dónde se detiene.

Así es como se puede lanzarlo,

strace ./blabla 

¿Le da un "permiso denegado" error o algo así como "error de formato ejecutivo"? Con chmod +rx en el archivo, no debe pulsar "permiso denegado".

0

También debe asegurarse de que su nombre de usuario se encuentre en el grupo de videos. Verifique el/etc/group y asegúrese de que su nombre de usuario aparezca en la línea de "video".

5

Comprobar el punto de montaje para ver si está montada como noexec mediante la ejecución de "montaje"

1

Usted también consigue este problema al intentar ejecutar aplicaciones de 32 bits en un sistema de 64 bits. Ejecute:

a. file (executable name) 
b. uname -a 

y compruebe que ambos sean "i386" o "amd64".

Si ellos no son los mismos, echar un vistazo a this article:

14

que tenían el mismo problema y parecía que mi partición se monta como noexec cat/etc/mtab

Cuando configuré opciones en/etc/fstab Escribí exec, usuario, pero parece que la opción "usuario" establece de forma predeterminada "noexec". Cuando cambié el orden de estos dos a usuario, ¡todo volvió a la normalidad!

Espero que ayude.

+2

+1 ¡Resolvió mi problema! – jimifiki

2

Uso CodeBlocks en Ubuntu y he tenido este problema MUCHAS veces. lo que KermiDT dijo es exactamente la solución (si tuviera suficientes puntos de representación, lo habría votado)
La opción de "usuario" configura por defecto "noexec".
por lo que en/etc/fstab acaba de agregar, exec después del usuario. es decir, el mío se ve así:
/dev/sda6 /media/DATA vfat uid=kenny,gid=kenny,users,user,exec 0 0
Sin embargo, el espaciamiento es un poco apagado ... pero se entiende la idea.