[fpc-pascal] getting cross with the cross compiler

pascalX at piments.com pascalX at piments.com
Tue Oct 10 06:51:37 CEST 2017

On 08/10/17 10:12, Tomas Hajny wrote:
> On Sat, October 7, 2017 22:13, pascalX at piments.com wrote:
> Hi,
>   .
>   .
>> Can you offer any insights into what is going on with Lazarus not
>> locating the system unit and friends.  As you acknowledge they are
>> treated somewhat differently due to problems with the underlying
>> platforms.
>> I am wondering whether this enforced inconsistency with the generally
>> well organised structure could be leading to the problem.
>> It seems odd that fpc is finding them OK and Lazarus not.
>> It seems that fedora are doing something a little different in terms of
>> installation dirs, presumably a result of their way of providing
>> multilib 32/64 functionality where they install 64b libs in /usr/lib64
>> rather than /usr/lib.
>> I am wondering whether this has highlighted some assumption implicit in
>> the code about different version of libs being in the same place.
>> Do you have any ideas why the fpc can find the system.ppu etc and not
>> Lazarus?
> Have you looked at FPC FAQ (in particular,
> https://www.freepascal.org/faq.var#systemnotfound), or FPC documentation
> (https://www.freepascal.org/docs-html/user/usersu7.html#x21-280003.1.2)?
> FPC Wiki is an additional resource, there is some information related to
> Lazarus as well - see
> http://wiki.freepascal.org/Unit_not_found_-_How_to_find_units.
> All of this might help you in finding differences; note that installation
> packages created for specific Linux distributions may decide to modify the
> default unit locations.
> Hope this helps
> Tomas

OK, I have got somewhere is finding out what is going wrong.

The trunk cross-compiler is installed and correctly linked. distro fpc 
will use it when the appropriate flags are supplied, however, Lazarus is 
not looking is the right place for the system libs and is NOT building 
them when they are are required. Which it claims to be able to do.

I was able to get cross compilation from Lazarus by installing and 
symlinkg  trunk ppcx64  but of course this breaks the ability of build 
anything else from the svn pull because of versions block.

$make all         NOGDB=1 OS_TARGET=linux CPU_TARGET=x86_64 
Makefile:2914: *** The only supported starting compiler version is 
3.0.0. You are trying to build with 3.1.1..  Stop.

BTW is  that msg  is correct? I just built with 3.0.2 , it seems that 
the version block is not specific enough or the message missed a version 

There  are two conflicting conditions: fpc requires the system fpc to be 
older in order to build trunk but Lazarus is not smart enough to find ( 
or build ) the libs if ppc and ppcross are from different versions.

I don't know the mechanics of that but it would seem that there is an 
implicit assumption somewhere that ppc and ppcross are of the same 
version and this leads to it not finding the libs ( which are present  ) 
but not even trying to build them when they are "missing".

Were it not for the version restrictions in building fpc one could 
arguably say this was a reasonable assumption.  As it is, it leads to a 
very confused and confusing state which has taken several days to 
understand and untangle.

Maybe that could be addressed.

Thanks for the help along the way.

More information about the fpc-pascal mailing list