Pull to refresh
4
0
Иван @IvUs

User

Send message

Разговор был про рантайм, а не про студию

https://www.microsoft.com/en-us/download/details.aspx?id=48234


Vista SP2 - поддерживается.

В linux — не решить, а в windows проблема не возникает, т.к. самый новый рантайм официально доступен для системы выпущенной 15 лет назад.
Только при условии, что весь рантайм совместим с семёркой.

Дык. Он не только с семеркой совместим, но и с более старой вистой.
www.microsoft.com/en-us/download/details.aspx?id=48234
А windows для решения проблемы в VS есть комбобокс, в котором можно выбрать рантайм совместимый с WinXP. и больше ничего не нужно. А для всех версий новее, чем XP вообще ничего делать не нужно, разве что указать константу препроцессора с минимальной версией windows.
Это — удобно и понятно. Извращаться с кросскомпиляцией только для того, чтобы подлинковать старый glibc — это неудобно.
crosscompile-среду каждый разработчик сам себе собирает или берет готовую, собранную людьми, которые в теме?
В том-то и дело, что приходится делать именно так.
Есть всякого рода хаки типа
stackoverflow.com/questions/2856438/how-can-i-link-to-a-specific-glibc-version
но это все очень сильно снижает надежность разработки и просто еще более неудобно, чем просто компилять в старом linux.
Я намекаю на то, что никакой магии нет — просто разработчики используют рантайм 9-летней давности.

Это, значит, что среда разработки под linux должна жить в бородатой системе с kernel 2.6.27 и GLIBC 2.17.

А под windows их разработчик вполне может сидеть на свежей Win10, никаких проблем с запуском приложения под Win7 у него не будет.
Это вы не верно транслируете суть. DirectX12 — это неотъемлемая часть системы. А сишный рантайм — это всего лишь сишный рантайм. И проблема линукса как раз в том, что сишный рантайм вшит в систему довольно прочно и глубоко. Это создает массу неудобств не только разработчикам но и конечным пользователям
dll hell возникает, когда зависимости копируются в системную папку. Если зависимости приватны никакого hell нету.
Мы приходим к тому, что я изначально написал выше. При возникновении проблем с зависимостями в Windows они решаются простым копированим потребных dll. При возникновении проблем с зависимостями в linux возникает необходимость перекомпиляций.
Я имею ввиду, что под windows я могу компилировать свой проект и линковать чужие dll не вникая в их зависимости — мой проект скомпилируется и слинкуется.
Если посмотреть в sourceware.org/glibc/wiki/FAQ#What_version_of_the_Linux_kernel_headers_should_be_used.3F
То там пишут
The other way round (compiling the GNU C library with old kernel headers and running on a recent kernel) does not necessarily work as expected.
То есть может, оно будет работать, может нет — никто ничего не обещает.
Так я и собираю свою программу со старым glibc 2.13. Но у меня есть third-party либа собранная под убунтой и glibc 2.23 и вот оно-то и источник головняка.
свежая glibc из системы с более свежим ядром будет пытаться использовать фичи, которых нет в старом ядре.
Фактически вы перекладываете проблему совместимости на конечного пользователя. Но это не значит, что она пропадает.
Я так сделать не могу, т.к. софт штучный и пишется под ТЗ конкретного заказчика. Т.е. первое, что я спрашиваю, это под какую платформу нужен продукт.
Можно. Только это и есть неудобство и потенциальный источник проблем. Я в конечном итоге так и делал, т.к. деваться было некуда.
А теперь смотрите. Кастомер почитал хабр и понял, что нужно мигрировать с centos 6 на centos 7 или даже на 8. Обновляется, копирует прогу — она падает, т.к. наша приватная glibc была собрана для другого ядра. И хорошо, если просто падает. А если начинает тихонько глючить это вообще беда.
Нельзя взять из убунты. glibc из убунты на centos не будет работать, потому как ядра разные. Добро пожаловать в суровый мир linux.
Я собирал свою glibc из исходников и прикладывал в локальной папке.
Но это 1. потребовало много усилий. 2. это тоже небезопасный способ, т.к. glibc завязано на ядро, а процесс смены ядра я никак не контролирую. При первой же возможности я от этого зоопарка избавился посредством смены кодека. Но с костылем пришлось жить несколько лет.
Под windows закрытость исходников компиляции никак не мешает.

Information

Rating
7,708-th
Location
Волгоград, Волгоградская обл., Россия
Registered
Activity