compilar

T

Bueno..soy nuevo en esto de linux y por lo que dsecubierto es q para q un comando sea comprendido por linux (kernel o lo q sea) tiene q estar en la carpeta /bin

Si uno compila un programa:
./configure
make
y ve q los ejecutables están en el archivo donde compiló el programa ...intenta ejecutarlos con su ordena..pero no va...

hace un
$cp ejecutable /bin

y luego hace
$ejecutable

y vemos q s q lo interpreta..

Mi pregunta es ...esta es la forma correcta?? o si está compilado bien tendría q pasarlo automáticamente a la carpeta /bin ..o desde donde esten los ejecutables pueden ser compilados...??????????

CeeC

Hombre, la mayoría de los fuentes ya te suelen venir para que lo instales mediante

./configure
make
[sudo] make install

y no te tienes que preocupar de llevarte el ejecutable a ningún sitio. En cualquier caso no es que sólo puedas ponerlo en /bin. También tienes /usr/bin, /usr/local/sbin, /usr/local/bin...

GNU/Linux mira en todas esas carpetas en busca del ejecutable que pides en la consola porque hay una variable que tiene esos directorios. El nombre de esa variable es PATH. Si haces en consola:

$ echo $PATH

Te saldrá el listado de las rutas de ejecutables separadas por ':'. Si quieres incluso puedes crearte una en tu home y decirle a $PATH que mire en ella. Imaginemos que queremos aregar /home/pepino/ejecutables

$ PATH="$PATH:/home/pepino/ejecutables"

Básicamente le estamos diciendo que PATH vale PATH más el separador (:) y el nuevo directorio.

Saludos.

T

muchas gracias ceec...

pero tu crees q si compilo un programa y no me pasa los ejecutables (donde tienen q estar ) es q no está bien compilado????

Pq lo estoy "forzando" (copiando el ejecutable a /bin) y no me funciona bien...
tu creees q ese puede ser el motivo?

MrNobody

No tiene el xq estar en /bin .... hay /usr/bin y alguno mas donde puedes encontrar los bin...

Sabras que esta bien instalado cuando al tabular salga xD

Dod-Evers

o igual sólo tienes que compilarlo y lo puedes ejecutar desde tu home, en /home/programa y ahí lo ejecutas. Si es un programa "monolítico" y cosas así.

De todas formas, dí el programa que quieres compilar y te podrán(dremos) decir algo.

maRc

Una vez lo compilas con el make, si lo hace bien, ya tienes los ejecutables en el mismo directorio donde lo compilas (o algún subdirectorio dentro de este).

Para poder ejecutarlo, solo tienes que llamarlo desde la consola. La consola tiene una variable de entorno llamada PATH, que es como te ha dicho CeeC, la lista de directorios donde busca para encontrar los ejecutables. En mi caso:

marc@bergunter:$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/games

Es decir, cuando tecleo una orden, la consola se va a buscar primero a /usr/local/bin, si lo encuentra lo ejecuta, y si no pasa a los siguientes, /usr/bin, /bin, /usr/games.

Una vez dicho esto, nada más compilar un programa con el make, el ejecutable no está dentro de uno de los directorios del PATH, por lo que aunque lo llames no lo vas a poder ejecutar.
Los Makefile vienen con una opción, como te han dicho antes, que sirve para mover todos los ficheros que necesita el programa, no solo los ejecutables, sino ficheros de configuración, gráficos, sonidos, etc, a donde corresponda. Normalmente los ejecutables van en /usr/bin, y el resto se pone en /usr/share.

Así que el procedimiento correcto es:
./configure
make
make install (como root)

Hacer cualquier otra cosa (mover los ficheros a mano, por ejemplo), no es recomendable, ya que el make install lo hace todo automático.

Por último, si te fijas se llama a ./configure. Esto es porque el ejecutable (que en este caso es un script), no se encuentra en el PATH, por lo que tienes que darle la ruta para que llegue al ejecutable. El ./ indica que encuentra en el directorio actual, seguido del nombre.

Imaginate que tienes un directorio en tu home donde metes algunos programas, por ejemplo en /home/pepito/programas.
Para ejecutar esos programas, deberías de tener el directorio en el PATH, o cada vez que quisieras llamarlos, tendrías que escribir /home/pepito/programas/nombredelprograma.

Espero que te haya quedado claro.

T

#6 muchiiiiiiiiísimas gracias , me ha quedado muy claro. :D

Y

En todas las aplicaciones, que son distribuidas por sus fuentes, suelen estar acompañadas de un fichero llamado README, INSTALL o derivado.

Ahí se encuentra toda la documentación, explicando como instalarla.

Generalmente suele ser:

./configure
make
make install (como root)

pero no tiene porque ser así.

De todas formas, en el momento que hagas make, si no te devuelve algo tipo ERROR... no te tienes que preocupar (tiene que ser ERROR, los warnings aunque hay que tenerlos en cuenta son solo avisos, y no impiden la compilación).

Usuarios habituales