do you mind handing out a primer on linking vs static compiliing. Especially in the context of GPL?

@Ming while it's fresh do you mind handing out a primer on linking vs static compiliing. Especially in the context of GPL?
1 Reply
Ming
Ming2mo ago
For the people that watched the Licences & Vulnerabilities Tech Tips where I talked about linking vs static compiling in the context of GPL... When you want to make use of functions in a library within your code you have options: So, I have a library, foo.c with some functions that I want to use in my application, bar 1. Use the library statically - that means the functions in the library are going to be part of your binary - Compile the library gcc -c -o foo.o foo.c - Then make it a static library ar rcs libfoo.a foo.o - Now use it in your code gcc -c bar.c -o bar.o gcc -o bar bar.o -L. -lfoo You have a single binary that includes both your code and the library's code.
This is classed as a derivative work so if the library was LGPL or GPL, then your code must also be GPL 2. Use the library as a shared object This means that the library code has been compiled with a -shared flag and you end up with a .so file - e.g. libfoo.so In your code you can then link to that library gcc -L. -lfoo -o bar bar.c In this instance, the original library is untouched and your code is just making use of it. As long as the library ls licensed under LGPL, then your code can be commercial. That is a highly simplified answer - I may do a blog post about it where I can use more space. For those of you who didn't watch the tech tips... Go watch it on the replay!
Want results from more Discord servers?
Add your server