This message is in MIME format. The first part should be readable text,
while the remaining parts are likely unreadable without MIME-aware tools.
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;
}
--- SoupGate-Win32 v1.05
* Origin: fsxNet Usenet Gateway (21:1/5)