Software libraries are of the static or dynamic variety. In a static library, code from the library is integrated into the executable at compile time. The resulting executable is relatively large but runs fast and in a stand-alone manner. In a dynamic library, code from the library is linked to the executable at run-time. The executable is smaller, and due to the sharing of dynamic libraries across processes, has less memory overhead. However, running the executable is contingent on the presence of the dynamic library in the machine that it runs on. Linking a library at run-time can also cause loss in speed.

This disclosure presents machine-learning based techniques to optimally identify a build target as a shared or static library. A recommendation is made to the software developer regarding an optimal setting (dynamic or static) for compilation. The techniques enable a developer to make informed design decisions.

Creative Commons License

Creative Commons License
This work is licensed under a Creative Commons Attribution 4.0 License.