08-26-06 12:45 PM
abhi147@gmail.com wrote:
> Hi ,
>
> I am trying to create a shared library and trying to load it
> usinf dlopen() function . My code and steps to create and load the *.so
> is :
>
> /*** test.c ***/
> #include <stdio.h>
> void test()
> {
> printf("Hello World\n");
>
> }
>
> /*** Steps for *.so creation ***/
> bash-3.00# gcc -fPIC -c test.c
> bash-3.00# gcc -o library.so -shared test.o
> bash-3.00# gcc -o library.so -Wl,-h,library.so -shared test.o
>
> /***load.c***/
> #include <stdio.h>
> #include <dlfcn.h>
>
> int main(int argc,char **argv)
> {
> void *handle;
> char *error;
>
> handle = dlopen ("library.so", RTLD_LAZY);
> if (!handle) {
> fprintf (stderr, "%s\n", dlerror());
> exit(1);
> }
>
> }
>
> /*** Steps for creating load executable***/
> bash-3.00# gcc test.c -ldl
>
> When I run the "a.out" it gives me the following error
>
> bash-3.00# ./a.out
> ld.so.1: a.out: fatal: library.so: open failed: No such file or
> directory
>
> Can someone tell me .. where am I doing wrong ?
>
> Thanks !
In the line
handle = dlopen ("library.so", RTLD_LAZY);
replace "library.so" by "./library.so" or even
better by an absolute pathname.
Spiros Bousbouras
[ Post a follow-up to this message ]
|