第四十六章. 链接动态链接的函数

内容
Linux
DEC OSF/1
SunOS 4.xSolaris 2.x 和 HP-UX
在你创建并注册完用户定义的函数后,你的工作就基本完成了.但是,Postgres 必须把实现你的函数的目标码(例如,一个 .o 文件,或一个共享库)装载进来.正如我们前面所说,Postgres 在运行时根据需要把你的代码装入内存.为了让你的代码能够动态装载,你可能要把它们用一种特殊的方法编译和链接-编辑它们.本章简单的介绍在你应该怎样进行要求的编译和链接,才能够把你自定义的函数装载到正在运行的 Postgres 服务器里去.

如果你有特殊的问题,我们希望你能好好读一下 C 编译器 cc(1),和链接器,ld(1) 的手册页(最好多读几便).另外,在回归测试套件的目录 PGROOT/src/regress 里包含这个过程的几个工作样本.如果你按照这些测试的例子做,你应该没有任何问题.

会用到下面几个术语:

下面的通用限制和注释适用于后面的讨论:

Linux

在 Linux ELF 里面,目标文件可以通过声明编译选项 -fpic 生成.

例如,

# simple Linux example
% cc -fpic -c foo.c
生成一个目标文件 foo.o 就是可以动态装载入 Postgres.不需要进行附加的装载或者链接编辑工作.