Страница 1 из 2
		
			
				Точка входа в программу. Принудительно.
				
Добавлено: 
05.11.2020 18:06:55 
				 Seenkao
				Как компилируемой программе указать принудительно, где будет стартовать программа?
			 
			
		
			
				Re: Точка входа в программу. Принудительно.
				
Добавлено: 
05.11.2020 20:30:14 
				 скалогрыз
				в той строчке кода, которая начинается с "begin" а заканчивается "end."
обычно файл с таким кодом должен начинатся с ключевого слова "program", но это не обязательно.
Но на самом деле, точка входа прикрыта RTL-ом. Потому что кроме прочего нужо же ещё и модули инициализировать.
			 
			
		
			
				Re: Точка входа в программу. Принудительно.
				
Добавлено: 
05.11.2020 20:59:52 
				 Seenkao
				скалогрыз, мне интересно, когда даже указано "принудительно" - это наверно всё же должно что-то значить?
Мне надо обойти проблему: entry point(start) undefined. Usually in crt1.o for architecture x86_64
"ткнуть ему (компилятору) пальцем" где у меня начинается программа, чтоб он мне выдал конкретную ошибку в программе.
			 
			
		
			
				Re: Точка входа в программу. Принудительно.
				
Добавлено: 
05.11.2020 21:07:12 
				 скалогрыз
				Seenkao писал(а):"ткнуть ему (компилятору) пальцем" где у меня начинается программа, чтоб он мне выдал конкретную ошибку в программе.
если "компилятор" дошёл до ошибки "entry point(start) undfined", то я думаю, что это проблема компоновщика (линкера).
лучше расскажи для какой системы ты компилируешь.
 
			 
			
		
			
				Re: Точка входа в программу. Принудительно.
				
Добавлено: 
05.11.2020 21:08:30 
				 Seenkao
				MacOS
			 
			
		
			
				Re: Точка входа в программу. Принудительно.
				
Добавлено: 
05.11.2020 21:14:54 
				 скалогрыз
				Seenkao писал(а):MacOS
версия макОСи какая? версия компилятора какая?
 
			 
			
		
			
				Re: Точка входа в программу. Принудительно.
				
Добавлено: 
05.11.2020 21:21:25 
				 Seenkao
				MacOS High Sierra
FPC 3.2.0
Lazarus 2.0.1
x86_64-darwin-cocoa
			 
			
		
			
				Re: Точка входа в программу. Принудительно.
				
Добавлено: 
05.11.2020 21:30:03 
				 скалогрыз
				попробуй такую Custom Option добавить к командной строке компилятора:
- Код: Выделить всё
 -WM10.8
 
			 
			
		
			
				Re: Точка входа в программу. Принудительно.
				
Добавлено: 
05.11.2020 21:44:52 
				 Seenkao
				Это не подошло, но натолкнуло на мысль. Скомпилировать удалось, только бесполезно, почему-то не всё скомпоновалось (надеюсь правильно написал).
файл вышел слишком малого размера... значит там не всё, ошибка при запуске.
			 
			
		
			
				Re: Точка входа в программу. Принудительно.
				
Добавлено: 
05.11.2020 21:49:41 
				 скалогрыз
				спрошу, ты же устанавливал Command Line tools от Xcode ?
- Код: Выделить всё
 xcode-select --install
 
			 
			
		
			
				Re: Точка входа в программу. Принудительно.
				
Добавлено: 
05.11.2020 21:55:15 
				 Seenkao
				как Lazarus установил, следом xcode, точнее то что ты написал. Xcode был уже установлен до этого.
			 
			
		
			
				Re: Точка входа в программу. Принудительно.
				
Добавлено: 
05.11.2020 22:36:20 
				 скалогрыз
				хорошо.
попробуй (из командной строки) скомпилировать и запустить
- Код: Выделить всё
 begin
  writeln('hello world');
end.
 
			 
			
		
			
				Re: Точка входа в программу. Принудительно.
				
Добавлено: 
05.11.2020 22:48:58 
				 Seenkao
				нет, мне надо именно моё, другое всё запускается.
А это значит, что где-то компиляция криво работает. Не так как я думаю (хотя я считаю что не так как надо  

 ).
 
			 
			
		
			
				Re: Точка входа в программу. Принудительно.
				
Добавлено: 
05.11.2020 22:56:20 
				 скалогрыз
				Seenkao писал(а):нет, мне надо именно моё
технически "именно моё" это что? ... да, хотя какая разница.
берёшь запускаешь из терминала:
- Код: Выделить всё
 man ld
в мануале будет сказано как указать точку входа для компоновщика.
(гугление показывает что это "-e" параметр с последующим именем символа)
После этого, значение этого параметра тебе нужно передать через fpc. С помощью Лазаруса это делается легко. Project Options -> Compilation and Linking -> Linking
ставишь тычку в "pass options to linker" а в едите-ниже пишешь
- Код: Выделить всё
 -e mySuperStart
и вроде бы всё!
 
			 
			
		
			
				Re: Точка входа в программу. Принудительно.
				
Добавлено: 
05.11.2020 23:07:50 
				 Seenkao
				Благодарю, но попробую попозже.
Добавлено спустя 11 часов 55 минут 30 секунд:
Запустил, но сразу закрывается. Теперь буду искать конфликты...
Оказалось проще всего запустить вообще без параметров линковщика (в Lazarus-е).