Точка входа в программу. Принудительно.

Общие вопросы программирования, алгоритмы и т.п.

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

Seenkao
энтузиаст
Сообщения: 565
Зарегистрирован: 01.04.2020 02:37:12
Контактная информация:

Точка входа в программу. Принудительно.

Сообщение Seenkao »

Как компилируемой программе указать принудительно, где будет стартовать программа?
скалогрыз
долгожитель
Сообщения: 1804
Зарегистрирован: 03.09.2008 02:36:48

Сообщение скалогрыз »

в той строчке кода, которая начинается с "begin" а заканчивается "end."
обычно файл с таким кодом должен начинатся с ключевого слова "program", но это не обязательно.

Но на самом деле, точка входа прикрыта RTL-ом. Потому что кроме прочего нужо же ещё и модули инициализировать.
Seenkao
энтузиаст
Сообщения: 565
Зарегистрирован: 01.04.2020 02:37:12
Контактная информация:

Сообщение Seenkao »

скалогрыз, мне интересно, когда даже указано "принудительно" - это наверно всё же должно что-то значить?
Мне надо обойти проблему: entry point(start) undefined. Usually in crt1.o for architecture x86_64
"ткнуть ему (компилятору) пальцем" где у меня начинается программа, чтоб он мне выдал конкретную ошибку в программе.
скалогрыз
долгожитель
Сообщения: 1804
Зарегистрирован: 03.09.2008 02:36:48

Сообщение скалогрыз »

Seenkao писал(а):"ткнуть ему (компилятору) пальцем" где у меня начинается программа, чтоб он мне выдал конкретную ошибку в программе.

если "компилятор" дошёл до ошибки "entry point(start) undfined", то я думаю, что это проблема компоновщика (линкера).
лучше расскажи для какой системы ты компилируешь.
скалогрыз
долгожитель
Сообщения: 1804
Зарегистрирован: 03.09.2008 02:36:48

Сообщение скалогрыз »

Seenkao писал(а):MacOS

версия макОСи какая? версия компилятора какая?
Seenkao
энтузиаст
Сообщения: 565
Зарегистрирован: 01.04.2020 02:37:12
Контактная информация:

Сообщение Seenkao »

MacOS High Sierra
FPC 3.2.0
Lazarus 2.0.1
x86_64-darwin-cocoa
скалогрыз
долгожитель
Сообщения: 1804
Зарегистрирован: 03.09.2008 02:36:48

Сообщение скалогрыз »

попробуй такую Custom Option добавить к командной строке компилятора:
Seenkao
энтузиаст
Сообщения: 565
Зарегистрирован: 01.04.2020 02:37:12
Контактная информация:

Сообщение Seenkao »

Это не подошло, но натолкнуло на мысль. Скомпилировать удалось, только бесполезно, почему-то не всё скомпоновалось (надеюсь правильно написал).
файл вышел слишком малого размера... значит там не всё, ошибка при запуске.
скалогрыз
долгожитель
Сообщения: 1804
Зарегистрирован: 03.09.2008 02:36:48

Сообщение скалогрыз »

спрошу, ты же устанавливал Command Line tools от Xcode ?

Код: Выделить всё

xcode-select --install
Seenkao
энтузиаст
Сообщения: 565
Зарегистрирован: 01.04.2020 02:37:12
Контактная информация:

Сообщение Seenkao »

как Lazarus установил, следом xcode, точнее то что ты написал. Xcode был уже установлен до этого.
скалогрыз
долгожитель
Сообщения: 1804
Зарегистрирован: 03.09.2008 02:36:48

Сообщение скалогрыз »

хорошо.
попробуй (из командной строки) скомпилировать и запустить

Код: Выделить всё

begin
  writeln('hello world');
end.
Seenkao
энтузиаст
Сообщения: 565
Зарегистрирован: 01.04.2020 02:37:12
Контактная информация:

Сообщение Seenkao »

нет, мне надо именно моё, другое всё запускается.
А это значит, что где-то компиляция криво работает. Не так как я думаю (хотя я считаю что не так как надо :) ).
скалогрыз
долгожитель
Сообщения: 1804
Зарегистрирован: 03.09.2008 02:36:48

Сообщение скалогрыз »

Seenkao писал(а):нет, мне надо именно моё

технически "именно моё" это что? ... да, хотя какая разница.

берёшь запускаешь из терминала:

в мануале будет сказано как указать точку входа для компоновщика.
(гугление показывает что это "-e" параметр с последующим именем символа)

После этого, значение этого параметра тебе нужно передать через fpc. С помощью Лазаруса это делается легко. Project Options -> Compilation and Linking -> Linking
ставишь тычку в "pass options to linker" а в едите-ниже пишешь

Код: Выделить всё

-e mySuperStart

и вроде бы всё!
Seenkao
энтузиаст
Сообщения: 565
Зарегистрирован: 01.04.2020 02:37:12
Контактная информация:

Сообщение Seenkao »

Благодарю, но попробую попозже.

Добавлено спустя 11 часов 55 минут 30 секунд:
Запустил, но сразу закрывается. Теперь буду искать конфликты...

Оказалось проще всего запустить вообще без параметров линковщика (в Lazarus-е).
Ответить