SunOS 4.xSolaris 2.x 和 HP-UX

在 SunOS 4.x,Solaris 2.x 和 HP-UX 里,简单的目标文件必须通过用特殊的编译标志编译源文件来创建,并且必须生成一个共享库.在 HP-UX 里的必要的步骤如下.给 HP-UX 的 C 编译器的 +z 标志生成所谓的"位置无关码"("Position Independent Code" (PIC))然后 +u 标志废除一些 PA-RISC 体系通常要求的对齐限制.目标文件必须用 HP-UX 的连接编辑器用 -b 选项转换成共享库.这些听起来很复杂,但实际上很简单,因为处理这些的命令只是:
# simple HP-UX example
% cc +z +u -c foo.c
% ld -b -o foo.sl foo.o
类似我们上一节提到的 .so 文件,创建函数的命令必须得到装载哪个文件的正确指示(例如,你必须给出共享库的位置,或 .sl 文件).在 SunOS 4.x 里,这些命令看起来象:
# simple SunOS 4.x example
% cc -PIC -c foo.c
% ld -dc -dp -Bdynamic -o foo.so foo.o
在 Solaris 2.x 里,相当的命令是:
# simple Solaris 2.x example
% cc -K PIC -c foo.c
% ld -G -Bdynamic -o foo.so foo.o
# simple Solaris 2.x example
% gcc -fPIC -c foo.c
% ld -G -Bdynamic -o foo.so foo.o
在链接共享库的时候,你可能还要在你的 ld 命令行上声明一些附加的共享库(典型的是系统库,像 C 和 数学库).