shared - одна библиотека, предоставляемая системой для разных приложений. static - методы линкуются и располагаются непосредственно в исполняемом файле, т.е. отсуствует зависимость от библиотек целевой платформы
libssh2 собрал статикой для API 21, openssl собрал статикой для 16 (выше не собирается), свою библиотеку из исходников собрал как shared, прилинковал к ней libssh2 и openssl, в проекте указал API 21.
Только я понять не могу, почему libssh2, зависящая от static openssl нормально собирается как static, а моя библиотека, зависящая от libssh2 уже не хочет собираться как static?