Las siguientes funciones están relacionadas con las llamadas a funciones externas escritas en leguaje C y enlazadas dinámicamente con el sistema LE-LISP:
Para ilustrar los pasos necesarios para realizar enlaces dinámicos vamos a
suponer que se tiene un módulo llamado
toto.c escrito en lenguaje C. Desde el propio entorno LE-LISP podemos compilar
toto.c haciando una llamada al shell mediante la utilización del
carácter macro !:
? !cc -c toto.c = t
El siguiente paso consiste en enlazar el módulo toto.o al sistema:
? (cload "toto.o") = (18 . 2684)
La función cload pasa su argumento, sin realizar ningún cambio en él, al editor de enlaces ld. Esto permite emplear cualquier opción válida para ld, incluyendo las que permiten cargar librerías o enlazar a la vez varios módulos. A continuación se muestran dos ejemplos:
(cload "-u _sinh -lm")
(cload "toto.o pepe.o foo.o")
En general, la llamada(cload string ) generará la
siguiente llamada al aditor de enlaces:
ld -A lelispbin -Bstatic -N -x -T fin -o temporal string -lc
donde lelispbin se corresponde con el path que contiene el directorio donde está localizado el binario del sistema LE-LISP que se está ejecutando, fin es la primera dirección disponible en la zona de LE-LISP reservada para código compilado y temporal es un fichero temporal único en el directorio /tmp.
Una vez que se ha realizado el enlace, el fichero temporal contendrá el código del módulo C, que se cargará en la zona code de LE-LISP. Este fichero temporal se utilizará en lugar de lelispbin en las siguientes llamadas a cload. De este modo, se pueden realizar numerosas llamadas a cload para modificar secuencialmente una imagen ejecutable.