There is no way to combine non-free code components with free software with a copyleft license. The reason is that any such combination will be a derivative work of both, and since the terms are mutually incompatible, that would be illegal.
This follows directly from text of the GPL (the quote below is from GPL version 2), but similar language is in GPL version 3:
This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law. (my emphasis).
Please note that copyright law does not deal with computer science technicalities such as various methods of linking, a derivative work is a work that depends on another work, and cannot exist without that other work being present. It is this functional dependency that makes the composite a derivative, and not the method used to combine the components.
This is also made clear by the FSF in the GPL FAQ:
Does the GPL have different requirements for statically vs dynamically linked modules with a covered work? (#GPLStaticVsDynamic)
No. Linking a GPL covered work statically or dynamically with other modules is making a combined work based on the GPL covered work. Thus, the terms and conditions of the GNU General Public License cover the whole combination.
(As always, Wikipedia can be relied upon to confuse matters. However, the FSF FAQ is written by lawyers, the Wikipedia is written by anybody that has an opinion about something.)
What you need to do is to develop free replacements for all the non-free components. This has been done in several FLOSS projects in the past.