Programming :: Add A Static Library To Own Static Library?
Mar 31, 2010
To create a static library, or to add additional objectiles to an existing static library, I can use a command like this:ar rcs my_library.a file1.o file2.oBut how to add an existing static library to my own static library. I have created my own static library using the command above and want to link against the library libuuid.a (placed in /usr/lib/).
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.
How can we convert a dynamic library (filename.so) to a static library (filename.a) using gnu gcc . Can we get a static library form a dynamic library . I saw a few post in which the conversion form a static library to a dynamic library is mentioned but, unfortunately, not the other way.
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?
The following is my Makefile, I wanted to add a staic library named libtimer.a. I'm using the following Makefile. Please let me know how to add this static library:
I could get the static libcurl library ( a "libcurl.lib" file and a "curl.h" file), which supposed to be working under Windows.
Yet I tried Visual c++ 6.0 but it wasn't working at all.
Some idea on that ? I don't mind to try MinGW and Dev C++ if it will really work. (Cygwin is not good since it require client to have cygwin.dll in run-time folder).
By issuing the 'nm' command on shared library (internally using one static library), the functions exposed by static library is also being listed, Which allows to use internal functions which is of course not intended. I have one static library having A(), B() and C() functions. Creating one shared library which has function XYS() that is using A() and B() functions from Static library. While doing 'nm' on shared library, all the static library function are being listed.
Libraries have always been ambiguous to me. I would love to have a clear understanding of them. Here's what I know so far... Ok I know that libraries are a bunch of functions and definitions in C that binaries use. I also understand that static libraries are used by the binaries in /sbin:/usr/sbin:/usr/local/sbin and dynamically linked libraries are used by the binaries in /bin:/usr/bin:/usr/local/bin So why have statically linked and dynamically linked libraries? I know that dynamically linked libraries are used to save space. Otherwise each binary would need its own private copy of a library. So dynamically libraries are used to save space.
1. Where are the static libraries and the dynamically linked libraries located in the file structure?
2. Where does ldconfig fit into all of this?
3. Would a rootkit affect both statically and dynamically linked libraries? I would think yes unless the libraries only have read permissions.
4. If the above is true, is there any reason for your libraries to have write permission other than when you want to edit them?
I'm having some problems on the line with ***. This is from a OpenEntidade.java class file and I'm trying to update EmprestadorView's variables.
EmprestadorView.java public class EmprestadorView extends FrameView { ... OpenEntidade.java ----------------- public class OpenEntidade extends javax.swing.JFrame {
./configure script fails to configure libsf. Please check the following last few lines of configure script error.
But find command shows the following;
It seems the file libdb does exist. man dbopen displays man page for dbopen. I also tried to ln -s /usr/lib/libdb.a and libdb.so /lib dir but all were in vain.
I got this message on Friday from just one domain. uote:mailsrv.forthnet.gr #<mailsrv.forthnet.gr #5.5.0 smtp; 554 5.5.0 Your message was considered to be spam by the FORTHnet Antispamming Policy and was not delivered to the recipient. The following spam tests returned positive for this message:FORGED_RCVD_HELO,RCVD_IN_BRBL. For further information visitWe are not a spamming community but it seems we have a statice IP address that has a Reverse lookup to "myipaddress.static.lyse.net" and not my email domain. Would setting a cname mail.mydomain.no -> myipaddress.static.lyse.net cure this problem or are there more tricks to be performedOnce I have cured the FORGED_RCVD_HELO I can move to getting the IP removed from BARACUDA.
How to make simple games (snake, pong... nothing too fancy). I have completed making snake and now want to be able to distribute it. I built it using C++ and wxWidgets so it would be multi-platform. I'm able to compile it and run it in both Windows and Ubuntu using g++. In windows, I was able to distribute it by putting a *.dll file in the same folder as the executable. However in Linux, I don't understand what I need to do so that it would run on any installation of Ubuntu out of the "box". When I build it and try to run it in a different installation of Ubuntu (which has g++) it gives me an error saying that a particular library file was not found and Getlibs fails to find that library file.
Is there a way to build a project with G++ so that all the dependencies are either packaged in the executables or copied into the folder....?
I'm trying to make one that has some sorts in it for now. I know you have to make a header file and a .cpp file. I'm using VC++(yes, I'm in school so windows in needed. I use Ubuntu at home I swear D if it makes a difference. What goes in the header file, how is the cpp file set up, and then where do I put the files once I'm done?
i have a code written in c..for which i was trying to create a gui using Gtk+.but now i want to use qt4 for the same purpose but native language of qt4 is C++. i have to do library binding for my C code to develop a gui using qt4.
I am trying to write a program that can get the times from files on a NTFS drive in Linux using the ntfs-3g library. I have installed the development libraries and source on my Fedora 10 machine. I can find the headers in the /usr/include/ntfs-3g directory but when i try and compile my program I am getting an undefind reference to ntfs_mount() call. I have the following in my link string
g++ -L/lib -o ProgramName -lpthread -lntfs-3g
I did a pkg-config --cflags --libs libntfs-3g and it said all i needed was the -L/lib -lpthread and -lntfs-3g.
I have made a very simple program in SDL that draws one image four times on a window.However I wanted it to be statically linked so the end user wouldn't have to install SDL and SDL-image in order to get the program working.
i've got certain functions now declared as static and their being used as pointers. So, moving on I then added a variable which so happened to be used in both static and non static functions. Here's some testbed code, the variable in question is 'window':
In short, I can't see the point of using a class to wrap all of this. Never having been taught programming i'm unsure as to the best method for structuring an application like this. Should (would you design) this initial section be a class?
I jus found that #include<stdio.h> is not working with gcc and neither any function from the library like clrscr(); i found due to <stdio.h> is a windows lobrary file so its not come with linux. But I want to to know if I have to call any function from that library what should I do? Is there any way to install <stdio.h> in linux?
Where are the definitions for C library functions located? It was just recently that I realized that header files don't actually define any functions, they merely include their prototypes.
For instance, stdio.h includes the following line:
Code:
This just means that the definition of printf() is located in another file. What file? Is there some kind of default shared object file that is automatically included during compilation?
I'm trying to learn how to cross-compile libraries (static and shared) and executables for the Blackfin + uClinux environment.At this point, I can successfully compile a stand-alone "Hello, world" but fail when trying to add a (static) library to the mix.Here's the source code I wrote:
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"
is there a way to debug my library files from DDD? Basically a way to pass the paths to DDD so I can view the source etc. I'm having a segmentation nightmare, which only crops up about every 10 or so starts, I know it's in one file in a library. I could move the source file into my general code to debug, but am sure there's a way in DDD.
I need to create a software library with two copy file routines in it. This library will be used in a TCL script. I know how to write the routines, but I have never created a library before. How do I do this?
I am trying to use the QT4 frontend of poppler library in my application so I need to compile the library.In its main directory ./configure can be run but I got
Code:
checking which font configuration to use... fontconfig checking for FONTCONFIG... no configure: error: Package requirements (fontconfig >= 2.0.0) were not met: No package 'fontconfig' found
Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables FONTCONFIG_CFLAGS and FONTCONFIG_LIBS to avoid the need to call pkg-config.See the pkg-config man page for more details.
I have fontconfig installed (ubuntu):
2.8.0-2.1ubuntu3 (fontconfig)
However I have no idea where those flags are and what to set them to.
If we have a .so library elf in linux, will it be possible to find out the APIs supported by it. Or in other words, the functions that can be used along with the argument types and return type.? Note that we dont have any other header files or documentations related to the library.
in the directory of /var/log , i see some directory like apache2 , apt , gdm , i wonder does all these folders was made under the syslogd ? i mean do these utilities use syslogd to log their messages or they use their own systems , for example apache use syslog or use its own library?