On Fri, 4 Sep 2020, sergio wrote:
gcc -lusb file.c раньше работало, а теперь ругается на undefined reference и надо говорить gcc file.c -lusb Что произошло и что поменялось? -- sergio.
"undefined reference" это ругается компоновщик (linker). В принципе, для компоновщика всегда было правило, что неопределенные функции ищутся в библиотеках слева направо. То есть, если стоит -lu1 -lu2, то неопределенные символы в u2 не ищутся в u1. В случае с компилируемыми файлами, раньше они всегда переставлялись в крайнюю левую позицию до библиотек и поэтому работало. > gcc -dumpversion 4.8.5 > gcc -lm math.c OK Теперь, видимо, решили унифицировать: > gcc -dumpversion 10 > LANG=C gcc -lm math.c undefined reference Кленг пока еще работает по старому. > clang -dumpversion 9.0.1 > clang -lm math.c OK Вот с какой версии gcc это началось, самому интересно, найду, напишу. Ю. p.s. "math.c" #include <stdio.h> #include <math.h> int main() { double x = 3.5; printf(" %.1f %.1f\n",x,-x); printf("ceil %.1f %.1f\n",ceil(x),ceil(-x)); printf("floor %.1f %.1f\n",floor(x),floor(-x)); printf("round %.1f %.1f\n",round(x),round(-x)); printf("trunc %.1f %.1f\n",trunc(x),trunc(-x)); printf("nearbyint %.1f %.1f\n",nearbyint(x),nearbyint(-x)); return 0; }