46

I use code::blocks to compile my static library. The output result is a libstatic.a file. Now, how do I link to my library to use functions that were compiled?

(I tried to use #include "libstatic.a" but my project doesn't compile)

0

5 Answers 5

65
cc -o yourprog yourprog.c -lstatic

or

cc -o yourprog yourprog.c libstatic.a
Sign up to request clarification or add additional context in comments.

1 Comment

i tried the 2nd one and it works. thanks. i also could be able to configure for code::blocks to work too. :-)
10

You should #include "libstatic.h", i.e. use the appropriate header file in your code (that's why your code doesn't compile) and include the path to your libstatic.a in the linker options as one of your input libraries.

This webpage has some examples on linking to a static library, e.g.

gcc -I. -o jvct jvct.c libjvc.a

1 Comment

thank you. finally i got it done on codeblocks and I figured out that #include .h file not necessary the same name as the .a file.
9

I had to set the library path in my makefile. For this case you could use:

gcc -o myapp main.c -L. -lstatic

Comments

6

To link purely statically, use -static

cc -static yourprogram.c libstatic.a

1 Comment

Note that this will cause the compiler to statically link to all libraries, including libc, and will produce statically linked binary. It might be what you want (or not).
5
gcc -I. -o jvct jvct.c libjvc.a

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.