LINUX.ORG.RU

glibc-2.3.2


0

0

Есть некоторый проект на цэ/цэпэпэ успешно работающий на машинах с ядром 2.6.
Как малой кровью заставить его заработать на 2.4.30 с сабжем?

Интересует мнение тех, кто делал такое или хотя бы разбирается в вопросе.
Для остальных:
1. говно мамонта в качестве рабочего дистра отсасывает само по себе.
2. чрут отсасывает, ибо ничем не отличается от п.1
3. пионерские выкрики сраных теоретиков "crossdev! crossdev!" отсасывают с проглотом, ибо из коробки такой тулчейн не собрать принципиально.

на данный момент рабочий дистр - гента, и это единственное, что можно изменить в условии.



мало условий задали,
привели бы вывод ошибок при компиляции этого самого проекта на старом ядре с старыми же glibc

Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia

вопрос не в юзерспейсе, а в ядерной реализации ниток.

2.4 и 2.6 очень сильно различаются в этом плане

не буду говорить, за бэкпорт, но при переходе с 2.4 на 2.6 народец повеселился изрядно. могу предположить, что и обратный порт будет не менее веселым

ananas ★★★★★
()
Ответ на: комментарий от Sylvia

ошибки зависят от версий компиляторов (на хосте и таргетный кросс) и от наличия --without-headers в вызове crossdev'а.
всю матрицу я ессно не помню, и посмотреть сейчас не могу.
Одна из ошибок про ".if" c неконстантным выражением в асме, другие про неэльвалюе в присваивании. общий смысл таков, что ни веткой 3.x, ни 4.x старые glibc не собрать. Так же как и старые gcc-2.9.x. Для x86. Для ppc якобы всё работает.

gpg
() автор топика
Ответ на: комментарий от ananas

Забыл упомянуть маленький нюанс, собранная на ленни первая версия успешно работает и там и там.
Т.е. в принципе решение существует, но дебиан показал себя крайне неудобным для разработки дистрибутивом.
С потоками никаких проблем нет, подозреваю, что в этом заслуга boost'а.

gpg
() автор топика
Ответ на: комментарий от Sylvia

> привели бы вывод ошибок при компиляции этого самого проекта на старом ядре с старыми же glibc

Упс, пропустил.
Уточняю: на старом ядре ничего не строил, ибо говно м. Со старым glibc ничего не строил. Затыка как раз в том, что эту самую glibc свежими компиляторами не построить.
Эмпирически установлено, что самая старая компилябельная glibc - 2.3.4.
Слинкованное с ней на таргете не запускается.

gpg
() автор топика

Нужно начать собирать проект, решая возникшие проблемы по мере их поступления.

mv ★★★★★
()
Ответ на: комментарий от ananas

API не поменялся, поменялась только реализация. Поэтому если софт не закладывается на нюансы реализации, то проблем быть не должно.

Reset ★★★★★
()
Ответ на: комментарий от gpg

> Спасибо, кэп.

Глупо задавать такие вопросы. Единственный ответ, который хочется дать: "Работай, давай!".

mv ★★★★★
()
Ответ на: комментарий от gpg

поставь target дистр в виртуальную машину и посмотри как будет жить, зачем самому заниматься изобретением каких-то велосипедов если пока и сам не знаешь в чем проблема ?

Reset ★★★★★
()
Ответ на: комментарий от gpg

Нормальные люди работают так: разрабатывают на чем удобно, а потом идут на build-машину и собирают для нужной платформы, потом тестеры докладывают что не работает. И если вдруг что-то не заработает, то только тогда надо лезть на target платформу и смотреть в чем специфика.

Reset ★★★★★
()
Ответ на: комментарий от mv

Я рад, что ты нашёл в себе силы поделился сокровенным.
К сожалению, это не телефон доверия, так что, если речь не идёт о суициде, постарайся не засорять тред своими хотелками.

gpg
() автор топика
Ответ на: комментарий от Reset

Естественно, большинство лаб развёрнуты на ВМ.
Очевидно, что таргет живёт там вполне себе ничего.
Я как раз знаю, в чём проблема. Возможно не смог внятно донести.
Использовать таргет в качестве платформы разработки меганеудобно.
Допустим, что это ембедная платформа.

gpg
() автор топика
Ответ на: комментарий от Reset

Счастлив тебе сообщить, что у нас работают нормальные люди.
Мне кажется, "специфику" я описал достаточно ясно.

gpg
() автор топика
Ответ на: комментарий от Sylvia

После исправления пятой ошибки я усомнился в правильности решения патчить сабж до совместимости с современными gcc.
Тем более, что шестая была ошибкой ассемблера, а у нас нет спецов по гнутому ассемблеру.
В любом случае, написание патча для glibc выглядит неадекватной ценой для решения данной задачи.
Тем не менее, приду на работу, выложу последнее сообщение об ошибке.

gpg
() автор топика
Ответ на: комментарий от gpg

Собрав libc-2.3.2 новым компилятором, вы не решите свои проблемы. Есть различные подводные камни, в частности уже упомянутая различная реализация threads, в "старом" и новом ядрах. Нормальные разработчики должны внимательно чиать доки и помнить от всех новых фичах libc и писать код который соберётся на старой системе.

>Использовать таргет в качестве платформы разработки меганеудобно.

Зачем вы объединяет платформу разработки и платформу компиляции?

mky ★★★★★
()
Ответ на: комментарий от gpg

Еще раз повторю. Правильное решение только одно -- держать target систему на отдельной машине или в виртуалке. Разрабатывать и запускать софт на своей машине и отлаживать тоже на своей машине, а в последний момент запускать уже на target'е.

Embedded это тема вообще отдельная. В этом случае у тебя должен быть developer board и/или эмулятор в котором пускаются откомпилированные на машине разработчика бинарники.

Reset ★★★★★
()
Ответ на: комментарий от mky

Ты невнимательно читал, никаких проблем с потоками нет.
> Зачем вы объединяет платформу разработки и платформу компиляции?
Э... где я такое писал?
Таргет не годится ни как билдер, ни как воркстейшн. Так яснее?

gpg
() автор топика
Ответ на: комментарий от Reset

> держать target систему на отдельной машине или в виртуалке
Ещё раз повторю, именно так всё и есть.

> отлаживать тоже на своей машине
Эмулировать таргет на рабочей машине несколько э... трудно.

Embedded был только для примера.

gpg
() автор топика
Ответ на: комментарий от g

Очень рад, жалко, что не рак жопы.
Есть что сказать по существу - говори.
Нет - присоединяйся к mv, здесь тебе не толксы.

gpg
() автор топика
Ответ на: комментарий от Sylvia

В общем, crossdev я убил своими экспериментами, а из бэкапа машину поднимать очень лениво.
Вот ссылка на багу:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12928
Отличие в том, что при построении 2.3.2 ругается на строки в sigsuspend.s с номерами 6x, а не 8x.

Собственно, запостил для очистки совести - раз обещал. Похоже, проблема не имеет решения с приемлемыми сроками выполнения.

gpg
() автор топика
Ответ на: комментарий от gpg

Так естественно собирать по таргет надо родным тулчейном. Проблема по-моему высосана из пальца.

Reset ★★★★★
()
Ответ на: комментарий от Reset

> Так естественно собирать по таргет надо родным тулчейном.
Не обязательно. Собранное под ленни таких зависимостей не имеет. Думаю, дело тут в eglibc, но тем не менее.

> Проблема по-моему высосана из пальца.
Я так не считаю.

gpg
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.