Под Gcc нижеследующий пример успешно компилируется и работает.
// shared.c
#include <stdio.h>
void shared_func ()
{
puts ("shared_func() called successfully! ;-)");
printf ("Calling test_func() from library: ");
test_func (); // -- определена в исполняемом файле
}
// test.c
#include <stdio.h>
test_func () // -- вызывается из shared.so
{
puts ("test_func() called successfully! ;-)");
}
void main ()
{
printf ("Calling shared_func() from main: ");
shared_func ();
}
#!/bin/sh
gcc -o libshared.so shared.c -fPIC -shared
gcc -o test test.c -L. -lshared
LD_LIBRARY_PATH=. ./test