The following dynamic application uses a custom dynamic library which will be loaded and linked at application start-up. It uses the function foo() which is defined in the dynamic library. This function calls the bar() function defined in the main application.
The following is the dynamic application progdyn.c:
#include <chorus.h>
extern void foo();
main() {
foo(); /* calling foo defined in the library */
}
void bar() {
printf ("bar called\n");
}
The following is the dynamic library libdyn.c:
#include <chorus.h>
extern void bar();
void foo() {
printf ("Calling bar\n");
bar(); /* calling bar defined in the main application */
}
Create the directory and the Imakefile.
Create a directory libdyndir in $WORK, containing libdyn.c and the following Imakefile:
SRCS = libdyn.c DynamicLibraryTarget (libdyn.so, libdyn.o, , , ,) Depend(libdyn.c)
Build the dynamic library.
In the libdyndir directory, build the dynamic library libdyn.so using the commands ChorusOSMkMf, make depend, and make.
Create the directory and the Imakefile.
Create a directory progdyndir in $WORK, containing progdyn.c and the following Imakefile:
SRCS = progdyn.c
DynamicUserTarget (progdyn, progdyn.o, ,
$(WORK)/libdyndir/libdyn.so,
$(WORK)/libdyndir/libdyn.so, )
Depend(progdyn.c)
Build the dynamic application.
In the progdyndir directory, build the dynamic application progdyn using the commands ChorusOSMkMf, make depend and make.
% ChorusOSMkMf $WORK % make depend % make |
Copy the dynamic application.
Copy the dynamic application into the /bin subdirectory of the chorus_root_directory directory:
% cp $WORK/progdyndir/progdyn chorus_root_directory/bin |
Copy the dynamic library.
Copy the dynamic library into the /lib subdirectory of the chorus_root_directory directory:
% cp $WORK/libdyndir/libdyn.so chorus_root_directory/lib |
The following command will notify the runtime linker where to find the libdyn.so dynamic library:
% rsh jericho setenv LD_LIBRARY_PATH /lib |
Alternatively, set the runpath to /lib in the ldopts argument of the application macro (-rpath /lib).
Start the application.
Start the application and dynamically load the libdyn.so library, using the following command:
% rsh jericho /bin/progdyn |