[fpc-devel]Linker errors when compiling a mixed C/C++ code tree.

Marco van de Voort marcov at stack.nl
Tue Jan 27 16:04:56 CET 2004

> When one tries to compile a mixed C/C++ - pascal code tree into a single
> executable one gets the following linker errors :
> 1./usr/local/lib/fpc/1.0.10/units/freebsd/rtl/libpsysbsd.a(sysbsd0s283.o): 
>      In function `_SYSBSD$$_SYSTEM_EXIT':
> sysbsd0s283.o(.text+0x4): undefined reference to `_haltproc'
> 2./usr/local/lib/fpc/1.0.10/units/freebsd/rtl/libpsysbsd.a(sysbsd0s186.o): 
> In function `FPC_FINALIZEUNITS':
> sysbsd0s186.o(.text+0x8): undefined reference to `INITFINAL'
> The linkage step is carried out via the command:
> gcc -g ./../entities/cmdInterpret/lib/dbg/cmdinterpret.o 
> ./../entities/consoleCmd/lib/dbg/consoleCmd.o 
> /usr/local/lib/fpc/1.0.10/units/freebsd/rtl/libpsysbsd.a 
> ./../utilities/mainEntryPnt/dbg/mainEntryPnt.a -o ./../dbg/lib
> cmdinterpret.o is compiled from pascal source code as a unit
> consoleCmd.o,mainEntryPnt.a are compiled from C/C++ source code
> where the function main resides within the static library mainEntryPnt.a
> P.S. The OS upon which this is compiled is FreeBSD release 4.9.

fpc needs its own startup code modifications. 

What you could try to do(no guarantees)
Try to do the above compile step with "-v", and check the linker commandline.

Then execute exactly the same "ld" line, but substitute crt1.o (ort0.o,
can't remember) with cprt0.o (or cprt1.o) from the
/usr/local/lib/fpc/1.0.10/units/freebsd/rtl directory.

P.s. FPC 1.9.2 beta is in ports tree as lang/fpc-devel since early january.

More information about the fpc-devel mailing list