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 ... 
Спасибо заранее.