Enlazando funciones de carga din�mica

Despu�s de crear y registrar una funci�n definida por el usuario, el trabajo est� pr�cticamente terminado.Postgres, sim embargo debe cargar el fichero de c�digo objeto (e.g., a .o, o una biblioteca compartida) que implemente esa funcu�n. Como se ha mencionado anteriormente, Postgres carga el c�digo en tiempo de ejecuci�n, a medida que es necesario. A fin de permitir que el c�digo sea cargado din�micamente, puede tener que compilar y enlazar este c�digo de alg�n modo especial. esta secci�n explica brevemente como realizar la compilaci�n y el enlazado necesario antes de que pueda cargar sus funciones en un servidor Postgres en ejecuci�n. N�tese que este proceso ha cambiado respecto al de la versi�n 4.2.

Debe estar preparado para leer (y releer, y re-releer) las p�ginas de manual del compilador de C, cc(1), y del enlazador, ld(1), por si necesita informaci�n espec�fica. Adem�s, los paquetes de prueba de regresi�n del directorio PGROOT/src/regress contienen varios ejemplos de estwe proceso. Si comprende lo que realizan estas pruebas, no deber�a tener ning�n problema.

La siguiente terminolog�a se usar� m�s adelante:

Las siguientes restricciones generales y notas se aplican tambi�n al texto siguiente:

ULTRIX

Es muy facil escribir ficheros objeto de carga din�mica bajo ULTRIX. ULTRIX no tiene ning�n mecanismo para bibliotecas compartidas, y por lo tanto, no plantea restricciones a la interfase del cargador din�mico. Por otra parte, tendremos que (re)escribir un cargador din�mico no portable, y no podremos usar verdaderas bibliotecas compartidas. Bajo ULTRIX, la unica restriccion es que debe producir cada fichero objeto con la opcion -G 0. (N�tese que es trata del n�mero 0, no del literal "o"). Por ejemplo:

# simple ULTRIX example
% cc -G 0 -c foo.c
    
produce un fichero objeto llamado foo.o que puede ser cargado din�micamente en Postgres . No ha de realizarse carga o enlazado adicional.