Лазейки в GPL:
System Library Exception. Не распространяем библиотеки со своей программой, а требуем, чтоб их скачал и поставил юзер.
Stdin Remoting. Делаем marshaling wrapper для библиотеки и гоняем через stdin/stdout.
Drop-in Replacement. Распространяем программу, слинкованную с одной библиотекой, но так, чтобы, если стоит желаемая GPL библиотека, использовалась именно она.