I ve got some .so
libraries that I d like to combine into one shared library so that it doesn t depend on the original .so
files anymore.
The .so
files have dependencies to each other.
How can I do this? Can I do this?
I ve got some .so
libraries that I d like to combine into one shared library so that it doesn t depend on the original .so
files anymore.
The .so
files have dependencies to each other.
How can I do this? Can I do this?
This assumes you have the source code to all shared objects:
Provided there are no name space conflicts (which there should not be if the two co-exist as it is), it would not be too terribly hard to build them into one shared object.
If the shared libraries themselves depend on code from another library, order is going to matter. The real work is just getting the dependencies worked out in the makefile. I ve never seen circular dependencies in SO s successfully link, so I doubt that you have them to begin with. I.e. foo() depends on bar() which depends on foo().
I ve done this several times, though the libraries themselves were trivial. I took parts from ustr (string handler), a configuration file handler, some other custom parsers and other utility functions and created a custom mash up.
The real pain is bringing in upstream improvements to each once you have combined them, however I m not sure if that s an issue for you.
So if you have:
libfoo.so: $(LIB_FOO_OBJECTS) $(LIB_BAR_OBJECTS) $(LIBFOOBAR_OBJECTS)
Where:
LIB_FOO_OBJECTS =
$(libfoo)/foo.o
$(libfoo)/strings.o
LIB_BAR_OBJECTS =
$(libbar)/bar.o
....
... and the order is correct .. the rest is pretty easy. Note I didn t show header deps, everyone does that a little differently. They are important when making mash-ups though, as you d probably want to avoid recompiling the whole library every time one header changes.
NB: If all three projects are using autotools .. your task just got exponentially easier (or harder) depending.
If you DON T have the source code
If there is a static version of each library, you may be able to extract the objects and use them. I.e.:
$ cp /usr/lib/foo.a ./foo.a
$ ar x foo.a
$ gcc -fPIC -shared *.o -o foo.so
Of course its quite a bit more involved than illustrated.
I have never tried that and don t know how to handle SOs that have main() when it comes to linking in that case.
For example, let s say I want to find a particular word or number in a file. The contents are in sorted order (obviously). Since I want to run a binary search on the file, it seems like a real waste ...
最好、最小、最快、开放的来源、C/C++ 3d 提供方(在3ds max模型的支持下),而不是通用公平市价,
Given a 10 digit Telephone Number, we have to print all possible strings created from that. The mapping of the numbers is the one as exactly on a phone s keypad. i.e. for 1,0-> No Letter for 2->...
I m trying to find the source of a bug I have found in an open-source application. I have managed to get a build up and running on my Windows machine, but I m having trouble finding the spot in the ...
I wrote below code to readin line by line from stdin ex. city=Boston;city=New York;city=Chicago and then split each line by ; delimiter and print each record. Then in yet another loop I try to ...
I was wondering if there were any good free graphics libraries for C that are easy to use? It s for plotting 2d and 3d graphs and then saving to a file. It s on a Linux system and there s no gnuplot ...
Is there anything other than DDD that will draw diagrams of my data structures like DDD does that runs on Linux? ddd is okay and runs, just kind of has an old klunky feeling to it, just wanted to ...
Please note that this is not homework and i did search before starting this new thread. I got Store an int in a char array? I was looking for an answer but didn t get any satisfactory answer in the ...