This section explains how to build plug-in binaries. This section deals with compilation requirements and with linking requirements for Directory Server plug-ins.
The compiler needs to be able to locate the header files such as slapi-plugin.h. Find header files in install-path/include/.
Link plug-ins so the plug-in library is reentrant and portable and can be shared. The following example shows one way of building a plug-in library. The example works with the Sun compiler that is used with a 64-bit Directory Server running on Solaris platforms.
INCLUDE_FLAGS = -I../include CFLAGS = $(INCLUDE_FLAGS) -D_REENTRANT -KPIC -xarch=v9 -DUSE_64 LDFLAGS = -G DIR64 = 64 OBJS = dns.o entries.o hello.o internal.o testpwdstore.o \ testsaslbind.o testextendedop.o testpreop.o testpostop.o \ testentry.o testbind.o testgetip.o all: MKDIR64 $(DIR64)/libtest-plugin.so MKDIR64: @if [ ! -d $(DIR64) ]; then mkdir $(DIR64); fi $(DIR64)/libtest-plugin.so: $(OBJS) $(LD) $(LDFLAGS) -o $@ $(OBJS) .c.o: $(CC) $(CFLAGS) -c $< clean: -rm -f $(OBJS) libtest-plugin.so $(DIR64)/libtest-plugin.so
The CFLAGS -xarch=v9 and -DUSE_64 specify that the compiler builds the library for use with a 64-bit server. Notice also that the 64-bit library is placed in a directory that is named 64/. This extra directory is required for 64-bit plug-ins. A 64-bit server adds the name of the extra directory to the path name when searching for the library. Refer to Searching Plug-In Libraries for further information.
The following example shows a 32-bit equivalent of the Makefile.
INCLUDE_FLAGS = -I../include CFLAGS = $(INCLUDE_FLAGS) -D_REENTRANT -KPIC LDFLAGS = -G OBJS = dns.o entries.o hello.o internal.o testpwdstore.o \ testsaslbind.o testextendedop.o testpreop.o testpostop.o \ testentry.o testbind.o testgetip.o all: libtest-plugin.so libtest-plugin.so: $(OBJS) $(LD) $(LDFLAGS) -o $@ $(OBJS) .c.o: $(CC) $(CFLAGS) -c $< clean: -rm -f $(OBJS) libtest-plugin.so
Notice that both 32-bit versions and 64-bit versions of the plug-in library can coexist on the same host.
Build rules are in install-path/examples/. The rules are also in install-path/examples/Makefile64. Refer to these files for the recommended setup for compiling and linking on your platform.