Without SYSTEM

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Сообщение STAKANOV » 06.09.2005 08:58:04

По умолчанию всегда присутсвует модуль SYSTEM(кажется только он). Мне кажется что это можно как-то отменить. Кто-нибудь знает как?
Аватара пользователя
STAKANOV
энтузиаст
 
Сообщения: 1069
Зарегистрирован: 14.05.2006 21:26:24
Откуда: Зеленоград

Сообщение Alexander » 06.09.2005 13:01:56

По моему нельзя. Во всяком случае в последних версиях.
А вот смартлинк работает (-XX -CX). В Линуксе размер файлов
меняется очень заметно (от сотен до десятков килобайт).
А в виндах нет, скорее всего версия под него (которую я использую)
не собрана с поддержкой смартлинка.
Alexander
 

Сообщение Иван Шихалев » 06.09.2005 17:39:39

Мне кажется что это можно как-то отменить.

Кажется. Отменить нельзя.
А в виндах нет, скорее всего версия под него (которую я использую) не собрана с поддержкой смартлинка.

Обычно релизы собраны с поддержкой смартлинка, а снапшоты (третья цифра нечетная) — нет.
Аватара пользователя
Иван Шихалев
энтузиаст
 
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург

Сообщение STAKANOV » 07.09.2005 20:17:49

На FreeBSD -XX -CX тоже работает.
Аватара пользователя
STAKANOV
энтузиаст
 
Сообщения: 1069
Зарегистрирован: 14.05.2006 21:26:24
Откуда: Зеленоград

Сообщение STAKANOV » 07.09.2005 21:17:11

Только что пытался собрать Lazurus с -CX и -XX. Ничего не получилось - памяти не хватило. Тогда убрал -XX. Вроде собралось. Дальше опять вернул -XX в fpc.cfg. Запустил Lazurus, собрал пустую форму - в результате размер испоняего файла чуть больше 1Мб. Не плохо :) Хочу спросить - как заставить работать fpc с ключами -CX и -XX не наращивая память? Может есть опция позволяющая использовать больше диск, чем память?
Аватара пользователя
STAKANOV
энтузиаст
 
Сообщения: 1069
Зарегистрирован: 14.05.2006 21:26:24
Откуда: Зеленоград

Сообщение Sniper » 07.09.2005 21:25:26

STAKANOV
>>Ничего не получилось - памяти не хватило.
У тя сколько памяти-то? У меня 1Gb

Да... поменьше стало. Был файл 5Mb, а стал 2,8Mb-красота %-)
Sniper
постоялец
 
Сообщения: 472
Зарегистрирован: 28.05.2005 13:02:42

Сообщение STAKANOV » 07.09.2005 21:28:26

384M ...
честно говоря о том, что проблему можно решить увеличив память я догадался
B) но речь не об этом
Аватара пользователя
STAKANOV
энтузиаст
 
Сообщения: 1069
Зарегистрирован: 14.05.2006 21:26:24
Откуда: Зеленоград

Сообщение Sniper » 07.09.2005 21:36:38

а о чём же тогда речь?
Без памяти, я думаю никак...

>>384M ...
Это уже не модно... %-) Кстати у меня на 512Mb легко собиралось
Sniper
постоялец
 
Сообщения: 472
Зарегистрирован: 28.05.2005 13:02:42

Сообщение Guest » 07.09.2005 22:29:02

Sniper писал(а): >>384M ...
Это уже не модно... %-) Кстати у меня на 512Mb легко собиралось

Ну конечно, увеличу память и поставлю себе Windows XP какой-нибудь чтоб ее использовать ;)
Я первый раз в жизни на этом компьютере увидел, что был задействован своп! Вряд ли я когда-нибудь сделаю проект такого рзмера как Lazarus. :rolleyes: Так что пока оставим как есть :P
Guest
 

Сообщение STAKANOV » 07.09.2005 22:30:14

Это я был :ph34r:
Аватара пользователя
STAKANOV
энтузиаст
 
Сообщения: 1069
Зарегистрирован: 14.05.2006 21:26:24
Откуда: Зеленоград

Сообщение PVOzerski » 08.09.2005 11:35:54

Касательно ампутации модуля system:
Единственный вариант - сгенерить компилятором asm-код, а потом выкинуть из него вручную все отсылки на модуль system. И еще "согласовать" со stаrtup-кодом - написать новый _FPC_EXE_Entry и т.п. Возможности же написать что-то функциональное - сами понимаете: только для очень частных задач (даже writeln не будет :) ).

Касательно управления памятью при компиляции:
1) а кто память-то жрет, компилятор или линкер?
2) попробовать распаковать большего обжору (а лучше - обоих), ежели он упакован UPX'ом.
3) это уже из области фантазий :) юзать DOS-версии компилятора и/или линкера (а вот здесь нужен именно кросс-вариант!) через pif-файл.
PVOzerski
постоялец
 
Сообщения: 109
Зарегистрирован: 19.05.2005 13:45:10
Откуда: СПб

Сообщение STAKANOV » 08.09.2005 12:03:39

PVOzerski писал(а): Касательно управления памятью при компиляции:
1) а кто память-то жрет, компилятор или линкер?
2) попробовать распаковать большего обжору (а лучше - обоих), ежели он упакован UPX'ом.
3) это уже из области фантазий :) юзать DOS-версии компилятора и/или линкера (а вот здесь нужен именно кросс-вариант!) через pif-файл.

1) Думаю линекер, отваливается на этапе "Linking lazarus" (или что вроде этого). Самое инетресное, что я своп вечра увеличл на 1Гб - так он (своп) заполнился на 20% (память при этом была занята на 89%) и так же точно все отвалилось. Просто иногда в некотрых программах возможны ключи позволяющие использовать другие ресурсы (наример меньше использовать память, а больше использовать диск), но похоже у fpc такого нет. Единственный вариант - увеличение памяти. Кстати может у кого тоже фря и памяти больше и так собрать получилось? :(

2) Не упакованы. Я тут UPX поставил и попробывал им обработать уже собранные пргограммы - они сразу работать перестали :rolleyes:

3) в эмуляции? :blink:
Аватара пользователя
STAKANOV
энтузиаст
 
Сообщения: 1069
Зарегистрирован: 14.05.2006 21:26:24
Откуда: Зеленоград

Сообщение Alexander » 08.09.2005 13:54:33

Интересный прецендент с гигабайтным своппингом. Я надеялся что при таком
своппинге всё таки скомпилируется (пробовал на меньшем ~600мб).

Если я правильно понял, смартлинк не может делать "чужой" линкер. Никак.
Это так распоряжается памятью FP. Или (!) "архитектурная" кривизна Лазаруса.
Он к "экзешнику" сишные интерфесы прилинковывает. Может проблема в этом.
Работа большая, это понятно. Но то, что виснет на ней это глюк (чей ?).
А вообще смартлинк штука очень грамотная и нужная.

Это уже не модно... %-) Кстати у меня на 512Mb легко собиралось


Со смартлинком -CX -XX ?

2) Не упакованы. Я тут UPX поставил и попробывал им обработать уже собранные пргограммы - они сразу работать перестали


А во Фри БСД разве формат "экзешников" и способ их запуска с Линуксом
совпадает ? Или UPX знает про Фри БСД ? У меня под Линуксом и виндами
работает как часы.

Да... поменьше стало. Был файл 5Mb, а стал 2,8Mb-красота %-)


Можно ещё strip сделать :-) и UPX ом.
Alexander
 

Сообщение STAKANOV » 08.09.2005 18:08:33

Если я правильно понял, смартлинк не может делать "чужой" линкер. Никак.
Это так распоряжается памятью FP. Или (!) "архитектурная" кривизна Лазаруса.

FP - это точно. Похоже готовит специальные объектные куски и затем линкует их с помощью ld.
И где то во время этого процесса память и съедается. Честно говоря это странно. Lazarus явно меньше чем XFree или Mozilla. А последнии хоть и на си написаны, но имеют явно более сложный и более ресурсоемкий процесс сборки. Уверен что все это явный баг FPC. Предпологаю, что он строит какую-то таблицу зависимостей и делает это в памяти, а памяти бац и не хватает. Если так, то не понятно что мешает делать то же самое на диске, в файле? Хотя с другой сторны почему тогда такая ситуация со свопом? Жаль я языка не знаю, а то пообщался бы с разработчиками. :(

Или UPX знает про Фри БСД ?

Из портов - т.е. специальная сборка для FreeBSD, там если надо то и патчики накладываются. Но и у тех кто порты пишет далеко не все всегда гладко. :(
Аватара пользователя
STAKANOV
энтузиаст
 
Сообщения: 1069
Зарегистрирован: 14.05.2006 21:26:24
Откуда: Зеленоград

Сообщение Guest » 09.09.2005 14:37:09

Alexander писал(а):
Это уже не модно... %-) Кстати у меня на 512Mb легко собиралось


Со смартлинком -CX -XX ?

Можешь попробовать сам
make clean
make smart

%-)
Guest
 

След.

Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 46

Рейтинг@Mail.ru