Два вопроса.
1. С чем имеет дело ваша программа/библиотека? Есть ли у неё что-то интересное сверх консоли — окна, сеть и прочее?
2. Нужно ли, чтобы один и тот же пакет — физически один и тот же — работал под разными ОС?
Минус-минус: это самое простое. Используйте хорошо заспецифицированный язык с реализациями под разные ОС вроде Си++, Java и Питона.
Плюс-минус: используйте такой же язык, но с кроссплатформенным фреймворком. Я бы предложил фреймворк Qt и библиотеку Boost, хотя на каждом языке есть что-то своё.
Минус-плюс: Используйте язык со стандартизированным промежуточным кодом вроде Java. Или Питон и JavaScript, исполняющие напрямую исходный текст.
Плюс-плюс: Тут нужны и стандартизированный промежуточный код, и кроссплатформенный фреймворк. Поскольку часто этот фреймворк нужно отдельно качать в версии под нужную ОС — тут покатит Java и, возможно, Питон.