Without SYSTEM
Модератор: Модераторы
-
Alexander
- Иван Шихалев
- энтузиаст
- Сообщения: 1138
- Зарегистрирован: 15.05.2006 11:26:13
- Откуда: Екатеринбург
- Контактная информация:
Только что пытался собрать Lazurus с -CX и -XX. Ничего не получилось - памяти не хватило. Тогда убрал -XX. Вроде собралось. Дальше опять вернул -XX в fpc.cfg. Запустил Lazurus, собрал пустую форму - в результате размер испоняего файла чуть больше 1Мб. Не плохо
Хочу спросить - как заставить работать fpc с ключами -CX и -XX не наращивая память? Может есть опция позволяющая использовать больше диск, чем память?
-
Guest
Sniper писал(а): >>384M ...
Это уже не модно... %-) Кстати у меня на 512Mb легко собиралось
Ну конечно, увеличу память и поставлю себе Windows XP какой-нибудь чтоб ее использовать
Я первый раз в жизни на этом компьютере увидел, что был задействован своп! Вряд ли я когда-нибудь сделаю проект такого рзмера как Lazarus. :rolleyes: Так что пока оставим как есть
-
PVOzerski
- постоялец
- Сообщения: 109
- Зарегистрирован: 19.05.2005 13:45:10
- Откуда: СПб
- Контактная информация:
Касательно ампутации модуля system:
Единственный вариант - сгенерить компилятором asm-код, а потом выкинуть из него вручную все отсылки на модуль system. И еще "согласовать" со stаrtup-кодом - написать новый _FPC_EXE_Entry и т.п. Возможности же написать что-то функциональное - сами понимаете: только для очень частных задач (даже writeln не будет
).
Касательно управления памятью при компиляции:
1) а кто память-то жрет, компилятор или линкер?
2) попробовать распаковать большего обжору (а лучше - обоих), ежели он упакован UPX'ом.
3) это уже из области фантазий
юзать DOS-версии компилятора и/или линкера (а вот здесь нужен именно кросс-вариант!) через pif-файл.
Единственный вариант - сгенерить компилятором asm-код, а потом выкинуть из него вручную все отсылки на модуль system. И еще "согласовать" со stаrtup-кодом - написать новый _FPC_EXE_Entry и т.п. Возможности же написать что-то функциональное - сами понимаете: только для очень частных задач (даже writeln не будет
Касательно управления памятью при компиляции:
1) а кто память-то жрет, компилятор или линкер?
2) попробовать распаковать большего обжору (а лучше - обоих), ежели он упакован UPX'ом.
3) это уже из области фантазий
PVOzerski писал(а): Касательно управления памятью при компиляции:
1) а кто память-то жрет, компилятор или линкер?
2) попробовать распаковать большего обжору (а лучше - обоих), ежели он упакован UPX'ом.
3) это уже из области фантазийюзать DOS-версии компилятора и/или линкера (а вот здесь нужен именно кросс-вариант!) через pif-файл.
1) Думаю линекер, отваливается на этапе "Linking lazarus" (или что вроде этого). Самое инетресное, что я своп вечра увеличл на 1Гб - так он (своп) заполнился на 20% (память при этом была занята на 89%) и так же точно все отвалилось. Просто иногда в некотрых программах возможны ключи позволяющие использовать другие ресурсы (наример меньше использовать память, а больше использовать диск), но похоже у fpc такого нет. Единственный вариант - увеличение памяти. Кстати может у кого тоже фря и памяти больше и так собрать получилось?
2) Не упакованы. Я тут UPX поставил и попробывал им обработать уже собранные пргограммы - они сразу работать перестали :rolleyes:
3) в эмуляции? :blink:
-
Alexander
Интересный прецендент с гигабайтным своппингом. Я надеялся что при таком
своппинге всё таки скомпилируется (пробовал на меньшем ~600мб).
Если я правильно понял, смартлинк не может делать "чужой" линкер. Никак.
Это так распоряжается памятью FP. Или (!) "архитектурная" кривизна Лазаруса.
Он к "экзешнику" сишные интерфесы прилинковывает. Может проблема в этом.
Работа большая, это понятно. Но то, что виснет на ней это глюк (чей ?).
А вообще смартлинк штука очень грамотная и нужная.
Со смартлинком -CX -XX ?
А во Фри БСД разве формат "экзешников" и способ их запуска с Линуксом
совпадает ? Или UPX знает про Фри БСД ? У меня под Линуксом и виндами
работает как часы.
Можно ещё strip сделать
и UPX ом.
своппинге всё таки скомпилируется (пробовал на меньшем ~600мб).
Если я правильно понял, смартлинк не может делать "чужой" линкер. Никак.
Это так распоряжается памятью FP. Или (!) "архитектурная" кривизна Лазаруса.
Он к "экзешнику" сишные интерфесы прилинковывает. Может проблема в этом.
Работа большая, это понятно. Но то, что виснет на ней это глюк (чей ?).
А вообще смартлинк штука очень грамотная и нужная.
Это уже не модно... %-) Кстати у меня на 512Mb легко собиралось
Со смартлинком -CX -XX ?
2) Не упакованы. Я тут UPX поставил и попробывал им обработать уже собранные пргограммы - они сразу работать перестали
А во Фри БСД разве формат "экзешников" и способ их запуска с Линуксом
совпадает ? Или UPX знает про Фри БСД ? У меня под Линуксом и виндами
работает как часы.
Да... поменьше стало. Был файл 5Mb, а стал 2,8Mb-красота %-)
Можно ещё strip сделать
Если я правильно понял, смартлинк не может делать "чужой" линкер. Никак.
Это так распоряжается памятью FP. Или (!) "архитектурная" кривизна Лазаруса.
FP - это точно. Похоже готовит специальные объектные куски и затем линкует их с помощью ld.
И где то во время этого процесса память и съедается. Честно говоря это странно. Lazarus явно меньше чем XFree или Mozilla. А последнии хоть и на си написаны, но имеют явно более сложный и более ресурсоемкий процесс сборки. Уверен что все это явный баг FPC. Предпологаю, что он строит какую-то таблицу зависимостей и делает это в памяти, а памяти бац и не хватает. Если так, то не понятно что мешает делать то же самое на диске, в файле? Хотя с другой сторны почему тогда такая ситуация со свопом? Жаль я языка не знаю, а то пообщался бы с разработчиками.
Или UPX знает про Фри БСД ?
Из портов - т.е. специальная сборка для FreeBSD, там если надо то и патчики накладываются. Но и у тех кто порты пишет далеко не все всегда гладко.
-
Guest
