C debugging, compilation and building
# Related
# Headers
#include
with ""
means relative path or directories added with -I
, with <>
means system headers or directories added with -I
. It’s a bit more complicated actually, but I don’t care. See
c - What are the benefits of a relative path such as "../include/header.h"
for a header? and
How to use #include
directive correctly?
# Libraries
There are static and dynamic libraries.
How to create static and shared libraries: C Programming Tutorial: Creating Libraries.
Static libraries can be built with an ancient ar
technology: ar rcs <libname.a> <...object files>
. Also you should declare all functions that you don’t want to leak to the outside world as static
. See also Making libraries.
See this in case you want to build a shared library.
See also
How do you actually use a C library? - Stack Overflow.
Important note - you can actually redefine functions from a library. Functions from libraries are used only when they’re not found in your code. See
this.
If a function is contained in two static libraries and you use both of them, then the implementation which comes in the first included library will be used. Weird.
UPD: I think it’s important how your object files are named. If the function is contained in both libraries, but the object files are named different, there will be a multiple declaration error.
# pkg-config
Used for getting all the right dependencies. Usage on Cairo hello world:
|
|
Libraries should be added as linker flags, AFTER stating what files you are compiling. See here.