[fpc-pascal] How to use external linker on windows i386

Sven Barth pascaldragon at googlemail.com
Fri Jun 7 15:39:29 CEST 2024


Ondrej Pokorny <lazarus at kluug.net> schrieb am Do., 6. Juni 2024, 11:56:

> On 06.06.2024 11:16, Sven Barth via fpc-pascal wrote:
>
> Ondrej Pokorny via fpc-pascal <fpc-pascal at lists.freepascal.org> schrieb
> am Do., 6. Juni 2024, 09:30:
>
>> Hello,
>>
>> I am on Windows 64bit, but using the i386 compiler.
>>
>> I have to link a 3rd party OBJ file with {$L 'xyz.obj'}.
>>
>> With the internal linker I get these errors:
>> Error: COMDAT selection mode 0 not supported (section: "0")
>> Error: Failed reading coff file, invalid section index while
>> reading xyz.obj
>> Error: Associative COMDAT section for section ".rdata" not found
>>
>
> Can you provide a small example as a bug report that shows this behavior
> (preferably also with source for the object file) so that we can improve
> the internal linker?
>
>
>> So I tried to use the external linker with -Xe and I get these errors:
>> Linking myProgram.exe
>> ld: warning: directory not found for option '-L/usr/lib'
>> ld: warning: directory not found for option
>> '-F/System/Library/Frameworks/'
>> ld: warning: option -b is obsolete and being ignored
>> ld: file not found: pei-i386
>> Error: Error while linking
>>
>
> That reads like the compiler is picking up the wrong linker (a WSL one
> perhaps?). The ld.exe (probably with platform prefix) should already be
> located in the compiler's binary directory and PATH needs to point to that
> first.
>
> Thank you Sven for the help!
>
> I changed the PATH so that the FPC bin directory is the first entry and
> the output indeed changed: I get only "Error: Error while linking" output
> without additional information that I got before.
>
> You should probably look at the unfiltered output of the message window.

Furthermore, I see from the docs that the -XR isn't supported on Windows (
> https://www.freepascal.org/docs-html/user/userap1.html)
> -XR<x>     Prepend <x> to all linker search paths (BeOS, Darwin, FreeBSD,
> Linux, Mac OS, Solaris)
>
> Maybe it would be good to support it on Windows as well to be able to
> explicitly tell which linker to use.
>
-XR does not do what you think it does. It only exists for specific cross
compiling issues on *nix platforms.

If you need to specify a path for the binutils you can use -FD<x>.

Regards,
Sven

>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-pascal/attachments/20240607/26328ef9/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Bno8wpbdAy7bAYoX.png
Type: image/png
Size: 3530 bytes
Desc: not available
URL: <http://lists.freepascal.org/pipermail/fpc-pascal/attachments/20240607/26328ef9/attachment.png>


More information about the fpc-pascal mailing list