LinuxQuestions.org
Share your knowledge at the LQ Wiki.
Home Forums Tutorials Articles Register
Go Back   LinuxQuestions.org > Forums > Non-*NIX Forums > Programming
User Name
Password
Programming This forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game.

Notices


Reply
  Search this Thread
Old 08-25-2009, 02:45 AM   #1
er_khatke
LQ Newbie
 
Registered: Aug 2009
Posts: 2

Rep: Reputation: 0
Question reverse dependency problem while dlopen shared lib


Hi everyone ,
I am using loading a shared library dynamically in my code using dlopen() & then calling a function of it which in turn calling the function of my own program .But this is giving "undefined reference" problem .Please see the following snap of the code :

Code for main Program :
==================================
/*sample.c*/
#include <dlfcn.h>
#include "sample_header.h"
void main_fun(int k)
{
printf("\n ***** In Main Fun : %d",k);
}
void main()
{
char *error;
void (*sample_fptr)(int);
void *handle = dlopen ("./sample_shared.so", RTLD_LAZY);
if (!handle)
{
printf ("\n%s\n", dlerror());
return;
}

dlerror();
sample_fptr = dlsym(handle, "shared_fun");
if ((error = dlerror()) != 0)
{
printf ("\n%s\n", dlerror());
return;
}

(*sample_fptr)(7);
printf("Done ........\n");

}
compilation command used : gcc -ldl sample.c
==============================================================
------------------------
//sample_header declaration is :

/*sample_header.h*/
#include <stdio.h>
void main_fun(int k);

--------------------------


Code for sample_shared.c :
++++++++++++++++++++++++++++++
#include "sample_header.h"
void shared_fun(int k);
void shared_fun(int k)
{
main_fun(k);
}

compilation command : gcc -shared -Wall sample_shared.c -o sample_shared.so
++++++++++++++++++++++++++++

Result @ runtime : ./sample_shared.so: undefined symbol: main_fun

Any suggestion to resolve this issue is appreciated.

Thanx in Advance
Kapil
 
Old 08-25-2009, 08:48 AM   #2
orgcandman
Member
 
Registered: May 2002
Location: new hampshire
Distribution: Fedora, RHEL
Posts: 600

Rep: Reputation: 110Reputation: 110
You need to use -rdynamic and -fPIC.

Here are the compilation commands to use:

gcc -o sample -ldl -fPIC -rdynamic sample.c

gcc -shared -rdynamic -fPIC -Wall -o sample_shared.so sample_shared.c
 
  


Reply

Tags
dependency, library, reverse, shared



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off



Similar Threads
Thread Thread Starter Forum Replies Last Post
undefined refrence while reverse dependency in shared library.. er_khatke Linux - Newbie 1 08-25-2009 04:24 AM
xine-lib dependency problem slackhack Fedora 2 04-23-2007 10:41 AM
problem with opening shared library using dlopen() in Red Hat Linux phani@tcs Linux - General 1 01-10-2006 03:49 PM
PAM unable to open dlopen(/lib/security/pam_securetty.so) NavForum Debian 0 07-30-2005 04:10 PM

LinuxQuestions.org > Forums > Non-*NIX Forums > Programming

All times are GMT -5. The time now is 02:27 PM.

Main Menu
Advertisement
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
Open Source Consulting | Domain Registration