Re: gcc-10: options order important?
On 2021-09-03 12:24 +0200, Piotr A. Dybczyński wrote:
> Hi,
>
> in contrary to previous versions, now in Debian 11 with gcc-10:
>
> gcc aa.c -lm -o aa works, but
>
> gcc -lm aa.c -o aa does not work, saying:
>
> /usr/bin/ld: /tmp/ccWyhudO.o: in function `main':
> aa.c:(.text+0x1f): undefined reference to `sqrt'
> collect2: error: ld returned 1 exit status
>
> It seems that an option -lm cannot be placed in an arbitrary place which I used to
> do. Is this intentional ?
Yes, gcc now invokes ld with the --as-needed option. This reduces
unnecessary linking and thereby Debian package dependencies, but it also
has the effect you are seeing, as mentioned in the binutils
documentation:
,----
| Object files or libraries appearing on the command line _after_ the
| library in question do not affect whether the library is seen as needed.
| This is similar to the rules for extraction of object files from
| archives. '--no-as-needed' restores the default behaviour.
`----
Cheers,
Sven
Reply to: