Difference between revisions of "Releasing units without source code/ru"

From Lazarus wiki
Jump to navigationJump to search
m
 
(3 intermediate revisions by one other user not shown)
Line 23: Line 23:
 
* Если код модуля зависит от другого модуля(ей), то все модули, от которых он зависит, должны быть совместимы с ним. Для проверки совместимости модулей между собой, компилятор использует контрольные суммы, встраиваемые в '''* .ppu''' файлы. С помощью опции компилятора '''-vu''' вы можете проверить совместимость модулей между собой. Если какой-то из файлов, используемых модулем, изменился, то компилятор выведет строку вида: '' Recompiling ..., checksum changed for ...'' (Перекомпиляция… контрольная сумма изменилась для…)
 
* Если код модуля зависит от другого модуля(ей), то все модули, от которых он зависит, должны быть совместимы с ним. Для проверки совместимости модулей между собой, компилятор использует контрольные суммы, встраиваемые в '''* .ppu''' файлы. С помощью опции компилятора '''-vu''' вы можете проверить совместимость модулей между собой. Если какой-то из файлов, используемых модулем, изменился, то компилятор выведет строку вида: '' Recompiling ..., checksum changed for ...'' (Перекомпиляция… контрольная сумма изменилась для…)
 
* Рекомендуется использовать стабильный релиз компилятора, поскольку все модули неявно зависят от модуля '''System'''.
 
* Рекомендуется использовать стабильный релиз компилятора, поскольку все модули неявно зависят от модуля '''System'''.
* При компиляции модуля иногда могут использоваться опции, отключающиеся от опции текущего проекта.
+
* При компиляции модуля иногда могут использоваться опции, отличающиеся от опции текущего проекта. Например:
 +
** '''-M''' (''Режим'')
 +
** '''-C''' (''Проверка''), такая как '''-Cr''' (''проверка диапазона''), '''-Ci''' (''проверка ввода/вывода''), '''-Co''' (''проверка переполнения''), '''-Ct''' (''проверка стека'')
 +
** '''-Sa''' (''Использовать assert в скомпилированном коде'')
 +
** '''-O''' (''Оптимизация'')
 +
** '''-gl''' (''Генерирует lineinfo код'')
 
* Для некоторых старых версий компилятора, имена модулей не должны содержать заглавных букв.
 
* Для некоторых старых версий компилятора, имена модулей не должны содержать заглавных букв.
  
Line 29: Line 34:
 
* [[Lazarus_Packages#Creating_a_closed_sourced_package]]
 
* [[Lazarus_Packages#Creating_a_closed_sourced_package]]
  
[[Category:FPC]]
+
 
 +
{{AutoCategory}}
 +
[[Category:FPC/ru]]
 +
[[Category:Packages/ru]]

Latest revision as of 23:42, 19 August 2016

English (en) español (es) Bahasa Indonesia (id) русский (ru)

Иногда полезно закрыть общий доступ к исходному коду модуля, например в следующих случаях:

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

FreePascal позволяет сделать это следующим образом.

Поставщику и Владельцу исходного кода модуля необходимо:

  • Скомпилировать модуль отдельно. Для этого используйте параметр компилятора -Ur
  • Опубликовать два получившихся *.ppu и *.o файлы. (см. раздел 3.3 руководства пользователя)

Пользователю модуля необходимо:

  • Скомпилировать программу с использованием *.ppu и *.o файлами. (для этого используйте параметр компилятора -Fu)

Примечание

  • Владельцу и Пользователю кода нужно иметь одинаковые версии компилятора.
  • Целевая ОС модуля, должна соответствовать ОС, для которой компилируется программа.
  • Если код модуля зависит от другого модуля(ей), то все модули, от которых он зависит, должны быть совместимы с ним. Для проверки совместимости модулей между собой, компилятор использует контрольные суммы, встраиваемые в * .ppu файлы. С помощью опции компилятора -vu вы можете проверить совместимость модулей между собой. Если какой-то из файлов, используемых модулем, изменился, то компилятор выведет строку вида: Recompiling ..., checksum changed for ... (Перекомпиляция… контрольная сумма изменилась для…)
  • Рекомендуется использовать стабильный релиз компилятора, поскольку все модули неявно зависят от модуля System.
  • При компиляции модуля иногда могут использоваться опции, отличающиеся от опции текущего проекта. Например:
    • -M (Режим)
    • -C (Проверка), такая как -Cr (проверка диапазона), -Ci (проверка ввода/вывода), -Co (проверка переполнения), -Ct (проверка стека)
    • -Sa (Использовать assert в скомпилированном коде)
    • -O (Оптимизация)
    • -gl (Генерирует lineinfo код)
  • Для некоторых старых версий компилятора, имена модулей не должны содержать заглавных букв.

Смотрите так же