Skip to content

Instantly share code, notes, and snippets.

@kragen
Created March 26, 2012 23:51
Show Gist options
  • Save kragen/2210789 to your computer and use it in GitHub Desktop.
Save kragen/2210789 to your computer and use it in GitHub Desktop.
En http://pad.telecomix.org/kipfajub
También en https://gist.github.com/2210789
# Para compilar node.js (voy a anotar el porque de cada comando despues)
tar xzvf node-v0.6.14.tar.gz # extraer archivo: z para gzip, v para verbose, f para file
cd node-v0.6.14/
./configure # se quejó que no había compilador de c++
sudo apt-get install g++ # g++ es el compilador c++ de GNU
./configure # ahora tiene más éxito pero se cuelga en falta de openssl
apt-cache show nodejs # pero no se sabe de un "nodejs"
apt-cache show node # ni tampoco, porque tengo que agregar universe y multiverse
sudo apt-get build-dep nodejs # y no tiene líneas deb-src en /etc/apt/sources.list
apt-cache search node.js # y no sabe de ningun paquete de node
sudo vi /etc/apt/sources.list # así que agrego estas líneas al archivo y
sudo apt-get update # actualizo las listas
apt-cache search node.js # y ahora sí se sabe
sudo apt-get build-dep nodejs # instalo las cosas que se necesitan para compilarlo
./configure # ahora con éxito
make # y en pocos minutos, puedo
./out/Release/node # hacer correr node!
para compilar xv:
tar xzvf xv-3.10a.tar.gz # descomprimo el archivo
cd xv-3.10a/ # voy al directorio
make # y ejecuto el comando make
# esto tira un error:
# Command not found
# eso puede significar dos cosas:
# que el archivo realmente no existe...
ls -l /home/ubuntu/Downloads/xv-3.10a/tiff/RANLIB.csh
ls /home/ubuntu/Downloads/xv-3.10a/tiff/RANLIB.csh
# ls me muestra que sí, efectivamente existe
# El otro problema puede ser que al intentar ejecutar el make algo salio mal...
cat /home/ubuntu/Downloads/xv-3.10a/tiff/RANLIB.csh
# cat muestra que el script intenta llamar a /bin/csh pero csh (que es otro interprete de
# comandos no esta instalado)
# unos boludos en los 80 usaron ese shell sin saber que no estaba bueno y escribieron el # script en ese lenguaje que no tiene nada que ver con el sh que tenemos instalados.
# si intentamos ejecutar el script con sh vamos a tener muchos mas problemas por eso
# mejor instalar csh. ver que no está instalado!
/bin/csh # nos tira un error.
sudo apt-get install csh
/bin/csh # ahora anda. "exit" para salir.
sudo apt-get build-dep xv
# pero Ubuntu y Debian no conocen ningún "xv", así que esto no anduvo.
make # y ahora si... pero se queja que no se encuentra X11/Xos.h
# Para saber que paquetes faltan los puedo buscar en
# http://www.debian.org/distrib/packages#search_contents
# o instalar el programa apt-file que me permite hacer busquedas desde mi linea de
# comandos.
sudo apt-get install x11proto-core-dev apt-file
apt-file update # para bajar los indices que usa apt-file
make # y ahora el error es otro diferente: xv.h está definiendo sys_errlist.h incorrectamente
nano xv.h # así que lo comento
make
# se queja que no hay X11/Xlib.h, lo cual está en el paquete libx11-dev
# instalamos las dependencias necesarias que mas se parecen a lo que nos esta
# solicitando make ,...
sudo apt-get install libx11-dev
make
apt-file search X11/Intrinsic.h
sudo apt-get install libxt-dev
# y ahora si...
make
# ejecutamos nuestro programa...
./xv
# para xteddy:
apt-get source xteddy # bajar el archivo y los parches de empaquetear
gzip -d xteddy_2.2-2ubuntu1.diff.gz # los parches están acá
less xteddy_2.2-2ubuntu1.diff
cd xteddy-2.2/ # apt-get automáticamente extrajo y parcheó xteddy
./debian/rules build # los parches agregaron éste script para compilarlo
sudo apt-get build-dep xteddy # pero se necesitan otras cosas para compilar!
./debian/rules build # ésta vez con éxito, y
./xteddy -f images/xbrummi.png
# un ejemplo de ltrace:
ltrace ./xteddy -f images/xbrummi.png # te muestra las llamadas
# para mostrar sacar un backtrace con GDB:
cd ../xv-3.10a/
vi xvbrowse.c # metí un bug crashero en el principio de CreateBrowse
make
./xv # Segmentation fault (core dumped)
ls -lart # pero no hay core
ulimit -a # porque core file size estuvo limitado a 0 bloques
ulimit -c 102400 # permitir un core file
./xv
ls -lart # ahora sí
gdb xv core # analizar el core con gdb, con el comando bt
grep -r CreateBrowse . # ver donde está definido y usado esta función
# recompilamos con -g para tener mejor información
touch xvbrowse.c
make CFLAGS=-g LDFLAGS=-g
gdb xv # correr xv debajo gdb, usar r para ejecutar, y bt para ver el backtrace
touch xvbrowse.c # para recompilar sin -g
make
touch xvbrowse.c
make CFLAGS=-g LDFLAGS=-g
# para mostrar los contenidos .debug etc. que pone -g:
objdump --full-contents xvbrowse.o | less
readelf -a xv | less # para ver la estructura del ejecutable
nm xv # para ver solamente los simbolos del ejecutable
nm xvbrowse.o | less # o del archivo que se compila de xvbrowse.c
# para mostrar file:
# file me dice que es ese archivo
file $(locate .jpg) # si quiero puedo pasar el resultado de locate a file como
# parametro
locate .jpg | file - # tambien puedo usar un pipe pero esto solo me muestra el
# resultado de lo que locate manda a file que en este caso es una lista en formato texto
# y no los nombres de los archivos como yo esperaba...
locate .jpg | xargs file
# y la ultima opcion es usar xargs que le pasa lo que recibe como parametro al comando...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment