I am not a Lawyer.
Section 4, subsection D of the LGPL-3 requires (emphasis mine):
d) Do one of the following:
- Convey the Minimal Corresponding Source under the terms of this License, and the Corresponding Application Code in a form suitable for, and under terms that permit, the user to recombine or relink the Application with a modified version of the Linked Version to produce a modified Combined Work, in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source.
- Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (a) uses at run time a copy of the Library already present on the user's computer system, and (b) will operate properly with a modified version of the Library that is interface-compatible with the Linked Version.
Section 5 clarifies the combination with non-LGPL works (emphasis mine):
You may place library facilities that are a work based on the Library side by side in a single library together with other library facilities that are not Applications and are not covered by this License, and convey such a combined library under terms of your choice, if you do both of the following:
a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities, conveyed under the terms of this License.
b) Give prominent notice with the combined library that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work.
Furthermore, the GPL FAQ says the following about static linking:
If you statically link against an LGPLed library, you must also provide your application in an object (not necessarily source) format, so that a user has the opportunity to modify the library and relink the application.
The main requirement here is that the people receiving a distributed copy of the firmware must have the option to modify the LGPL-licensed portions of the code and then use their modified version in place of yours to get a fully-working final firmware image ("fully working" barring any mistakes in their modifications).
If the source code for all components is available and can be built, then that is sufficient to meet this requirement for the LGPL-3.
If some components are proprietary or contain proprietary modifications, then those components must be provided as individual object files that can be re-linked to the (potentially modified) LGPL-licensed components by the end user.
Providing object files (*.o
and *.a
) alongside the distribution, as well as the instructions to combine those objects into a final firmware image, should be sufficient to meet this requirement for the LGPL-3.