trifon писал(а):Код fpc использовать в gcc достаточно легко, для этого ...
Добрый день 
trifon.
Попробовал как ты посоветвовал, но мне кажется у меня пока опыта мало. GCC ошибку выдает при линковке. Выдает что не могу определить функцию add_m в процедуре main.
Пример кода
файл Hello.c 
- Код: Выделить всё
- #include <stdio.h>
 
 int main(void)
 {
 int a =2;
 int b =3;
 int c;
 c=add_m(a,b);
 
 printf("Privet. Hello world!\n");
 printf("c= %i\n",c);
 
 return(0);
 
 }
Сгенерированный файл на FPC.
файл test_c.pas
- Код: Выделить всё
- unit test_c;
 interface
 
 {
 Automatically converted by H2Pas 1.0.0 from test_c.h
 The following command line parameters were used:
 test_c.h
 }
 
 {$IFDEF FPC}
 {$PACKRECORDS C}
 {$ENDIF}
 
 
 {$ifndef _Included_test_c}
 {$define _Included_test_c}
 { C++ extern C conditionnal removed }
 
 function add_m(_para1:longint; _para2:longint):longint;
 
 { C++ end of extern C conditionnal removed }
 {$endif}
 
 implementation
 
 function add_m(_para1:longint; _para2:longint):longint;
 begin
 { You must implement this function }
 result:=_para1+_para2;
 end;
 
 end.
Компилирую на паскале этот файл, получаю файл test_c.o
Далее компилирую на gcc  
- Код: Выделить всё
- gcc hello.c –c
и линкую
- Код: Выделить всё
- gcc hello.o test_c.o –o prog
тут выдает ошибку что не может найти функцию add_m в процедуре main.
Пробовал разные варианты (менял код на с, провобовал объявлять extern, объявлял в файле *.h,  и на паскале также - пробовал объявлять функцию в паскале как cdecl, менял опции компилятора FPC итд. 
Все равно не смог линковать. Может я что то пропустил? Мне бы этот пример чтобы сработал, далее дело техники -  добавлю свой код на паскале.  
Версия FPC 2.0.4 под Дебиян. GCC кажется 4.1.3 ... 
Спасибо заранее.