General :: Build A Shared Library On System Using Same Command Used For Solaris?
Jun 22, 2011
I am able to build a shared library under solaris with
/usr/local/bin/g++ -G -o output.so file1.o file2.o file3.o.
How do I build the shared library under linux using the same files?
I have tried to use the same command /usr/local/bin/g++ -g -o but I got some undefined references, even if those references are defined in one of the object files.
I think that the solution is very simple, but I cannot reach this solution. I'm trying to build an B.so that uses A.so.
A.so is compiled using C; B.so is compiled using C++;
Inside "Aso.h" file I'had declared:
Code:
#ifdef __cplusplus extern "C" { #endif
[code]....
There's no error to compile that, this library seems to be compiled correctly, but using the "nm" command the Aso.so functions appear with "U" of undefined. Trying to build an executable using the Bso.so library, I got this error: /lib/../lib/libBso.so: undefined reference to `foo(int, int, int)' I think that to solve this problem it's only link the Aso.so with the .o files generated at the compilation phase of my Bso. Using the "ldd" command I'm able to see that Bso.so depends on Aso.so, so what am I missing?
We have a 32bit Gui application created using C++. We ported the application from Solaris to Linux. Issue we are facing is the size of the library and executable is very large in LINUX compared to Solaris. Red Hat Enterprise Linux 5.4 is the Linux version we using. Please find a sample dynamic library created. We would like to know the following behavior of LINUX is normal or not. Consider we created two files test1.cc and test2.cc. Both having a single line of code.
I'm reading about shared, static, and dynamic libraries. What is SDL? Is it static, shared, or dynamic?
I always thought a library would be a lot of .h and .cpp files compiled separately into .o files and then if you compiled your own program you could use the -l parameter to link the library and it was all compiled together. Now I'm not so sure.
I don't even see any SDL .cpp files in my system anywhere. All I have are lots of SDL .h files in /usr/include/SDL and I don't really understand the code in them.
I'm making a wild guess here: SDL is a shared library. SDL itself is NOT compiled into my program, therefore SDL must be on any system my program tries to run on. When I compile and link SDL all it needs is the header files to know what SDL function and objects it can use. And then on every system it uses an already compiled SDL shared library thingy somewhere.
So... where is that part of SDL? All I can find are header files.
I'm thinking the advantage of shared libraries is that someone could say update SDL on their own system and take advantage of the new features without having to download new executables with the new version of SDL compiled into them for every program that uses SDL.
So if I'm making an editor and a game engine and they both use a lot of the same .cpp and .h files that I wrote and I'm tired of updating one and then the other and I need to turn them into a library, then a shared library might be kind of a silly solution. I could just make a static library. Right? Because it's not SDL. Nobody else is ever going to use this library.
What is the equivalent of read -r (solaris command ) in Linux ? read utility in solaris will read a single line from standard input and -r option is used not to treat backslash () as an escape character .
I want to build a package from source using src2pkg, but I don't know how to avoid library miss match. Suppose I have Firefox 3.5.2 on Slackware 13.0 64 and I want to upgrade it to 3.6.2. Last time when I venturesomely installed Firefox-3.6.2-current into my Slackware 13.0, I got library miss match. Thus, instead of upgrading the whole packages to current (which is impractical and cumbersome), I want to build 3.6.2 from source. How can I do this? Is there any guideline how to use src2pkg? Or should I rather use makepkg? Do I need to create a Makefile?
I am using Centos 5.2, and I installed all of the available gnome and gnome development libraries available via the "add software" menu item. Still, when running some programs, I get the following error message:
"error while loading shared libraries: libzvt.so.2: cannot open shared object file: No such file or directory"
If I understood it correctly, libzvt.so.2 is part of some gnome libs... where to find and how to install them?
I am having trouble in configuring xorg.conf. I am running Suse 11.3 desktop on my PC. Also, I have one onboard nvidia graphics 6150SE and I have put one nvidia 8400GS 512Mb in the 16X PCIe slot for the additional seat...
So kindly tell me what should I do now or what things are missing ?? For any further info abt my PC plz tell me to post outputs(specify the commands for the same..)
I built a shared library for some API functions (C files) and compiled them with gcc. Now I'm writing a c++ application (compiling with g++) and want to link my C API shared library and be able to use it from my application. Is this possible? At first instance, it's not quite working for me. I was able to link my shared lib just fine with a C application but got an "undefined reference to `apiFunction()'" error when attempting to do it with g++. Just want to see if anyone has any insight on this subject and make sure this mix is even is allowed.
I am trying to install the WebSphere MQ Client on a Red Hat Version 5 server with OS x86_64bit.. When I try the first step of there process it fails trying to find shared libraries:ERROR: Installation will not succeed unless the license agreement can be accepted. The MQ Client is 32 bit, but I am told it should work on 64 bit server...
I need a design which requires complete modularity and speed. I have a huge monolithic process that i'm seperating now with individual modules as libraries.I'm just worried how to go about the no of shared libraries? for example can i have 10 shared libraries in place of 1? what will be the advantage in that case?
I have visited these boards a few times, but never posted. Here's my problem: I was given the source to a program and asked to get it running on a 64-bit Debian 2.6.26 machine. Currently it is working on 2 64-bit OpenSUSE machines.
The application uses TCL TK for a GUI and everything compiles just fine; however, on startup, the user must enter one of three possible modules to load; when attempting to load these modules (tcl 'load' function), I receive this error:
Code: Error in startup script: couldn't load file "../Build/libMpf.so": libTransReaders.so: cannot open shared object file: No such file or directory while executing "load ../Build/libMpf.so Mpf" ("eval" body line 1) invoked from within "eval load ../Build/${px}${i}${sx} $i"
I'm trying to use buildroot to cross compile some libraries for me. To do so I've set up build root to point to my working tool chain in the menuconfig.All seems fine however when I try to make (buildroot) I get the following error
rm -rf /root/buildroot-2010.05/output/build/buildroot-config mkdir -p /root/buildroot-2010.05/output/build cp -dpRf package/config/buildroot-config /root/buildroot-2010.05/output/build/buildroot-config Checking external toolchain settings Incorrect selection of the C library make: *** [/root/buildroot-2010.05/output/stamps/ext-toolchain-installed] Error 255
I know it's pointing to the correct files and gcc as any wrong paths are reported in make menuconfig.
My code needs to link to some libraries. In my project file, I specify linker to link to abc library, for example. By default, does gcc link to libabc.a or libabc.so ? What if I really need to specify static or shared, how do I do that?
I have written a simple library and ended up with a .so file. I have a header file from writing the code that describes how to use the functions in the source code I have written. I think this .h files needs to be available to other programs that access this code.
I have seen lots of tutorials on how to copy the .so file to the relevant directories and make links with the version number. What I can't find is where to put the header file so that any programs I write to use my new library can access the header.
Hope this makes sense. For example, I might use <stdio.h> normally, I will need to access <mylibrary.h> once mylibrary.so is loaded (as far as I understand!)
It's weird, I've been using C compilers for embedded processors over ten years now and never given a second thought to how libraries and headers work behind the scenes!
I installed alsaequal URL....l and dependencies ladspa-sdk and caps, all via sbopkg.I'm getting this 'cannot open shared library' error even though that file does in fact exist at the indicated location.Has anyone run into this or successfully installed alsaequal? I also tried on a 13.1 install and got the same result.
I am trying to add some functions to a Postgresql database. The functions use a shared library which they think is: /usr/lib/pgsql/postgis-1.4.so They say: "ERROR: could not load library "/usr/lib/pgsql/postgis-1.4.so": libgeos_c.so.1: cannot open shared object file: No such file or directory"
I cd to /usr/lib/pgsql/ and do an ls. postgis-1.4.so is there. libgeos_c.so.1 is as well (and it's in /usr/lib/ )
Both the files seem to exist. I cannot copy either of them (cp says "cannot stat '[file]': No such file or directory".
I've been looking awhile now, but no patch for this is yet to be found. Does anyone have more info, or better, a fix? Last version from GNU's ftp server is also vuln as of this writing.
I am trying to test a shared library that I made in MATLAB. I'm not an expert, so if you need other info, or if i'm just not making sense I can try to clarify, or provide further info.First off:I'm using MATLAB 2011a, compiling c with the MATLAB compatible gcc-4.3, and all of this is running on 64 bit opensuse 11.3.
1) I've made a c shared library, header, and wrapper. 2) I've set the environment variable. 3) I'm having trouble creating an executable to test my .so with
I've also contacted MATLAB tech support, and they didn't help much. They said the wrapper (libatr2.c) is intended to be a template, and may not actually run my library unless eddited. Perhaps I should edit it to reference something called main? I'm not sure how to do that if that's the case.
I have written a shared library and successfully used debhelper 9 to create a Debian package from source using a Makefile generated by cmake. I then went about writing a python wrapper to that library and wish to package that wrapper in with the library so I can have a single distributable rather than 2 separate ones.
All of my attempts so far have me placing my python source and a setup.py file in the same directory as the makefile at the time where I call debuild.
From here I have tried a couple different configurations to my debian/rules file as seen below:
This try ran make, but completely ignored the python stuff. From some research I have gathered that the --buildsystem flag tells debuild to ignore any makefiles in the directory, which obviously causes a problem in my case.
Another attempt was to modify the build dependency to first run make and then call the python build process that file looked like this
This appears to somewhat work as both processes do build, but a few of the python files are still not getting installed.
Is this the way I should be going about doing this? I've noticed that most python wrappers tend to package themselves individually and then make that package dependent on the library it is attempting to wrap.