gcc -l links with a library file.
gcc -L looks in directory for library files.
Syntax
$ gcc [options] [source files] [object
files] [-Ldir] -llibname [-o outfile]
Link -l with library name without the lib prefix and the .a or .so extensions.
Examples
Example1
For static library file libmath.a use -lmath:
$ gcc -static myfile.c -lmath -o myfile
Example2
For shared library file libmath.so use -lmath:
$ gcc myfile.c -lmath -o myfile
Example3
file1.c:
// file1.c #include void main() {
printf("main() run!\n"); myfunc(); }
file2.c:
// file2.c #include void myfunc() {
printf("myfunc() run!\n"); }
Build file2.c, copy object file file2.o to libs directory and archive it to static library libmylib.a:
$ gcc -c file2.c $ mkdir libs $ cp file2.o libs $ cd libs $ ar rcs libmylib.a file2.o
Build file1.c with static library libmylib.a in libs directory.
Build without -L results with an error:
$ gcc file1.c -lmylib -o outfile /usr/bin/ld: cannot find -llibs collect2: ld returned 1 exit status $
Build with -L and run:
$ gcc file1.c -Llibs -lmylib -o outfile $ ./outfile main() run! myfunc() run! $