The UNIX and Linux Forums  
Hello and Welcome from United States to the UNIX and Linux Forums! Thank You for Visiting and Joining Our Global Community.

Go Back   The UNIX and Linux Forums > Top Forums > UNIX for Advanced & Expert Users
.
google unix.com




View Single Post in the UNIX and Linux Forums - Click on the Thread or Permalink to View Entire Thread -->
  #1 (permalink)  
Old 02-15-2006
senthilvnr senthilvnr is offline
Registered User
  
 

Join Date: Feb 2006
Posts: 2
How to Merge or Link 2 independent .so files

Hi all,

I am developing an application in Tcl, inwhich i have to load many modules written in C. I am converting those C modules into shared object(.so) files, and wrap it with my application using SWIG, for which i had the interface file.

Now my question is, i have two different .so files, let me name it as (prog1.so) and (prog2.so). My prog1.so contains 5 functions and my prog2.so contains 3 functions.

If i load prog1.so file individually in tclsh shell, i can able to call the functions available in prog1.so. Similarly for prog2.so also. But i want to call all the functions available in both the prog1.so and prog2.so .

Can Anyone help me to sort this problem out !!!!!!!!!!!!!!!!!!!!!!!!!!!

Here is the procedure what i did. kindly correct me if i did something wrong.

step 1:
------
I have the "prog1.c" file and interface file "prog1.i " and creating a wrapper code for it using the command

$ swig -tcl prog1.i

This will give me "prog1_wrap.c" which is a wrapper code for my C program.

step 2:
------
Now i compile the prog1.c and prog1_wrap.c using the following command

$ gcc -fPIC -c prog1.c prog1_wrap.c -I /usr/local/include

This will give me prog1.o and prog1_wrap.o files.


step 3:
------
Now i create a prog1.so file using the following command

$ gcc -shared prog1.o prog1_wrap.o -o prog1.so

step 4:
------

Here i will go to the tclsh shell and Load the (.so) file.

% load ./prog1.so prog1

This will load the file and i can able to call the function available in prog1.c

++++++++++++++++++++++++++++++++++++++++++++++++++++++

I can do the same for any no.of programs individually. But if i try to combine shared object files of two programs i can't able to load it in tclsh shell.

I tried with the following commands to merge the (.so) files, I doesnt know whether it make sense.

1.
$ gcc -shared prog1.so prog2.so -o combine.so

2.
$ gcc -shared prog1.o prog1_wrap.o prog2.o prog2_wrap.o -o combine.so


I hope these where not correct method to merge a two different shared object file.

I am Expecting your Valuable suggestions!!!
Thanks in Advance.



Regards,
Kumar.