Sharfik писал(а):Все время на глаза попадались исходники программ под linux, которые собирались непосредственно на месте. При возникновении желания разрабатывать под linux ПО, программист в linux системах вообще может один раз скомпилировать ПО и распространять или под каждый дистрибутив, под каждое оконное решение надо делать свою копию?
В линуксе всё довольно хитро с этим. Нужно учитывать архитектуру процессора, зависимость от внешних библиотек, версии ядра и т.д.
Отдельный бинарь скомпилирован под определённую архитектуру (intel/arm, 32/64), под непредназначенной не запустится. Если 64битный линукс донастроить, то в нём можно запустить 32битное приложение, но просто так не получится.
На тему зависимостей — лучше вообще не зависить от внешних библиотек и всё носить в себе, это даст максимально возможную переносимость. (Но это недостижимый идеал.) Иначе нужно следить за тем, чтобы используемые библиотеки были установлены в системе, они были правильно версии, всегда и везде правильно доступны из программы и т.д.
С версией ядра всё понятно — нужно по-максимуму соблюдать стандарты и не использовать особенности конкретных дистрибутивов.
Если аккуратно учесть все эти факторы, то можно получить переносимый между машинами одной архитектуры бинарь.
А отладка и компиляция в случае нашем требует работы под linux, да?
Скомпилировать бинарь можно где угодно («кросскомпиляция»). Мне кажется, что уже сам факт того, что бинарь собран кросскомпилятором говорит о том, что бинарь не привязан к чему-то совсем специфичному.
Где отлаживаться зависит от того, что отлаживать. Ясно, что, например, узнать «а программа вообще запустится ли» можно только попытавшись это сделать на настоящем линуксе.