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

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

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

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

Сообщение Seenkao » 05.11.2020 18:06:55

Как компилируемой программе указать принудительно, где будет стартовать программа?
Seenkao
энтузиаст
 
Сообщения: 502
Зарегистрирован: 01.04.2020 03:37:12

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

Сообщение скалогрыз » 05.11.2020 20:30:14

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

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

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

Сообщение Seenkao » 05.11.2020 20:59:52

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

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

Сообщение скалогрыз » 05.11.2020 21:07:12

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

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

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

Сообщение Seenkao » 05.11.2020 21:08:30

MacOS
Seenkao
энтузиаст
 
Сообщения: 502
Зарегистрирован: 01.04.2020 03:37:12

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

Сообщение скалогрыз » 05.11.2020 21:14:54

Seenkao писал(а):MacOS

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

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

Сообщение Seenkao » 05.11.2020 21:21:25

MacOS High Sierra
FPC 3.2.0
Lazarus 2.0.1
x86_64-darwin-cocoa
Seenkao
энтузиаст
 
Сообщения: 502
Зарегистрирован: 01.04.2020 03:37:12

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

Сообщение скалогрыз » 05.11.2020 21:30:03

попробуй такую Custom Option добавить к командной строке компилятора:
Код: Выделить всё
-WM10.8
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

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

Сообщение Seenkao » 05.11.2020 21:44:52

Это не подошло, но натолкнуло на мысль. Скомпилировать удалось, только бесполезно, почему-то не всё скомпоновалось (надеюсь правильно написал).
файл вышел слишком малого размера... значит там не всё, ошибка при запуске.
Seenkao
энтузиаст
 
Сообщения: 502
Зарегистрирован: 01.04.2020 03:37:12

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

Сообщение скалогрыз » 05.11.2020 21:49:41

спрошу, ты же устанавливал Command Line tools от Xcode ?
Код: Выделить всё
xcode-select --install
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

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

Сообщение Seenkao » 05.11.2020 21:55:15

как Lazarus установил, следом xcode, точнее то что ты написал. Xcode был уже установлен до этого.
Seenkao
энтузиаст
 
Сообщения: 502
Зарегистрирован: 01.04.2020 03:37:12

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

Сообщение скалогрыз » 05.11.2020 22:36:20

хорошо.
попробуй (из командной строки) скомпилировать и запустить
Код: Выделить всё
begin
  writeln('hello world');
end.
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

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

Сообщение Seenkao » 05.11.2020 22:48:58

нет, мне надо именно моё, другое всё запускается.
А это значит, что где-то компиляция криво работает. Не так как я думаю (хотя я считаю что не так как надо :) ).
Seenkao
энтузиаст
 
Сообщения: 502
Зарегистрирован: 01.04.2020 03:37:12

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

Сообщение скалогрыз » 05.11.2020 22:56:20

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

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

берёшь запускаешь из терминала:
Код: Выделить всё
man ld

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

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

и вроде бы всё!
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

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

Сообщение Seenkao » 05.11.2020 23:07:50

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

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

Оказалось проще всего запустить вообще без параметров линковщика (в Lazarus-е).
Seenkao
энтузиаст
 
Сообщения: 502
Зарегистрирован: 01.04.2020 03:37:12

След.

Вернуться в Общее

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

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

Рейтинг@Mail.ru