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