Точка входа в программу. Принудительно.
Модератор: Модераторы
Точка входа в программу. Принудительно.
Как компилируемой программе указать принудительно, где будет стартовать программа?
в той строчке кода, которая начинается с "begin" а заканчивается "end."
обычно файл с таким кодом должен начинатся с ключевого слова "program", но это не обязательно.
Но на самом деле, точка входа прикрыта RTL-ом. Потому что кроме прочего нужо же ещё и модули инициализировать.
обычно файл с таким кодом должен начинатся с ключевого слова "program", но это не обязательно.
Но на самом деле, точка входа прикрыта RTL-ом. Потому что кроме прочего нужо же ещё и модули инициализировать.
скалогрыз, мне интересно, когда даже указано "принудительно" - это наверно всё же должно что-то значить?
Мне надо обойти проблему: entry point(start) undefined. Usually in crt1.o for architecture x86_64
"ткнуть ему (компилятору) пальцем" где у меня начинается программа, чтоб он мне выдал конкретную ошибку в программе.
Мне надо обойти проблему: entry point(start) undefined. Usually in crt1.o for architecture x86_64
"ткнуть ему (компилятору) пальцем" где у меня начинается программа, чтоб он мне выдал конкретную ошибку в программе.
Seenkao писал(а):"ткнуть ему (компилятору) пальцем" где у меня начинается программа, чтоб он мне выдал конкретную ошибку в программе.
если "компилятор" дошёл до ошибки "entry point(start) undfined", то я думаю, что это проблема компоновщика (линкера).
лучше расскажи для какой системы ты компилируешь.
Seenkao писал(а):MacOS
версия макОСи какая? версия компилятора какая?
MacOS High Sierra
FPC 3.2.0
Lazarus 2.0.1
x86_64-darwin-cocoa
FPC 3.2.0
Lazarus 2.0.1
x86_64-darwin-cocoa
попробуй такую Custom Option добавить к командной строке компилятора:
Код: Выделить всё
-WM10.8Это не подошло, но натолкнуло на мысль. Скомпилировать удалось, только бесполезно, почему-то не всё скомпоновалось (надеюсь правильно написал).
файл вышел слишком малого размера... значит там не всё, ошибка при запуске.
файл вышел слишком малого размера... значит там не всё, ошибка при запуске.
спрошу, ты же устанавливал Command Line tools от Xcode ?
Код: Выделить всё
xcode-select --installкак Lazarus установил, следом xcode, точнее то что ты написал. Xcode был уже установлен до этого.
хорошо.
попробуй (из командной строки) скомпилировать и запустить
попробуй (из командной строки) скомпилировать и запустить
Код: Выделить всё
begin
writeln('hello world');
end.нет, мне надо именно моё, другое всё запускается.
А это значит, что где-то компиляция криво работает. Не так как я думаю (хотя я считаю что не так как надо
).
А это значит, что где-то компиляция криво работает. Не так как я думаю (хотя я считаю что не так как надо
Seenkao писал(а):нет, мне надо именно моё
технически "именно моё" это что? ... да, хотя какая разница.
берёшь запускаешь из терминала:
Код: Выделить всё
man ldв мануале будет сказано как указать точку входа для компоновщика.
(гугление показывает что это "-e" параметр с последующим именем символа)
После этого, значение этого параметра тебе нужно передать через fpc. С помощью Лазаруса это делается легко. Project Options -> Compilation and Linking -> Linking
ставишь тычку в "pass options to linker" а в едите-ниже пишешь
Код: Выделить всё
-e mySuperStartи вроде бы всё!
Благодарю, но попробую попозже.
Добавлено спустя 11 часов 55 минут 30 секунд:
Запустил, но сразу закрывается. Теперь буду искать конфликты...
Оказалось проще всего запустить вообще без параметров линковщика (в Lazarus-е).
Добавлено спустя 11 часов 55 минут 30 секунд:
Запустил, но сразу закрывается. Теперь буду искать конфликты...
Оказалось проще всего запустить вообще без параметров линковщика (в Lazarus-е).
