• =?UTF-8?B?0L/QvtGA0Y/QtNC+0Log0LDRgNCz0YPQvNC10L3RgtC+0LIgZ2Nj?=

    From sergio@21:1/5 to All on Fri Sep 4 11:10:01 2020
    gcc -lusb file.c

    раньше работало, а теперь ругается на undefined reference и надо говорить

    gcc file.c -lusb


    Что произошло и что поменялось?

    --
    sergio.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Stanislav Maslovski@21:1/5 to sergio on Fri Sep 4 11:30:01 2020
    ,

    On Fri, Sep 04, 2020 at 12:01:00PM +0300, sergio wrote:
    gcc -lusb file.c
    , undefined reference
    gcc file.c -lusb
    ?

    gcc?

    % gcc --version
    gcc (Debian 8.3.0-6) 8.3.0
    Copyright (C) 2018 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions. There
    is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

    % gcc usbtest.c -lusb
    % gcc -lusb usbtest.c
    % cat usbtest.c
    #include <usb.h>

    int main()
    {
    usb_init();
    return 0;
    }

    --
    Stanislav

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From sergio@21:1/5 to Stanislav Maslovski on Fri Sep 4 11:40:02 2020
    On 04/09/2020 12:26, Stanislav Maslovski wrote:
    gcc --version

    gcc (Debian 10.2.0-6) 10.2.0


    Sid


    --
    sergio.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Anatoly Pugachev@21:1/5 to sergio@outerface.net on Fri Sep 4 11:50:01 2020
    On Fri, Sep 4, 2020 at 12:36 PM sergio <sergio@outerface.net> wrote:

    On 04/09/2020 12:26, Stanislav Maslovski wrote:
    gcc --version

    gcc (Debian 10.2.0-6) 10.2.0


    mator@ttip:~$ gcc -lusb usbtest.c
    mator@ttip:~$ gcc usbtest.c -lusb
    mator@ttip:~$ ./a.out
    mator@ttip:~$ rm ./a.out
    mator@ttip:~$ gcc --version
    gcc (Debian 10.2.0-6) 10.2.0
    Copyright (C) 2020 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Nefedov.Yury@jinr.ru@21:1/5 to sergio on Fri Sep 4 12:40:01 2020
    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)
  • From sergio@21:1/5 to All on Fri Sep 4 12:20:02 2020
    % gcc -lusb usbtest.c
    /usr/bin/ld: /tmp/cckKmWxL.o: in function `main':
    usbtest.c:(.text+0x5): undefined reference to `usb_init'
    collect2: error: ld returned 1 exit status
    zsh: exit 1 gcc -lusb usbtest.c
    % gcc usbtest.c -lusb
    %

    Забавно, но это не у одного меня так:

    https://askubuntu.com/questions/1190940/compiling-a-libusb-0-1-program-fails-with-undefined-reference-errors


    --
    sergio.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Anatoly Pugachev@21:1/5 to sergio@outerface.net on Fri Sep 4 12:50:01 2020
    On Fri, Sep 4, 2020 at 1:12 PM sergio <sergio@outerface.net> wrote:


    % gcc -lusb usbtest.c
    /usr/bin/ld: /tmp/cckKmWxL.o: in function `main':
    usbtest.c:(.text+0x5): undefined reference to `usb_init'
    collect2: error: ld returned 1 exit status
    zsh: exit 1 gcc -lusb usbtest.c
    % gcc usbtest.c -lusb
    %

    Забавно, но это не у одного меня так:

    https://stackoverflow.com/questions/45135/why-does-the-order-in-which-libraries-are-linked-sometimes-cause-errors-in-gcc

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Stanislav Maslovski@21:1/5 to Anatoly Pugachev on Fri Sep 4 13:20:02 2020
    On Fri, Sep 04, 2020 at 01:40:43PM +0300, Anatoly Pugachev wrote:
    On Fri, Sep 4, 2020 at 1:12 PM sergio <sergio@outerface.net> wrote:
    , :

    https://stackoverflow.com/questions/45135/why-does-the-order-in-which-libraries-are-linked-sometimes-cause-errors-in-gcc

    , --as-needed "Importance of linking order"

    https://wiki.gentoo.org/wiki/Project:Quality_Assurance/As-needed

    --
    Stanislav

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Stanislav Maslovski@21:1/5 to sergio on Fri Sep 4 13:30:01 2020
    On Fri, Sep 04, 2020 at 12:36:15PM +0300, sergio wrote:
    On 04/09/2020 12:26, Stanislav Maslovski wrote:
    gcc --version

    gcc (Debian 10.2.0-6) 10.2.0

    Sid



    gcc --verbose usbtest.c -lusb



    gcc --verbose -lusb usbtest.c

    .

    --
    Stanislav

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Nefedov.Yury@jinr.ru@21:1/5 to Stanislav Maslovski on Fri Sep 4 14:30:01 2020
    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, Stanislav Maslovski wrote:

    On Fri, Sep 04, 2020 at 12:36:15PM +0300, sergio wrote:
    On 04/09/2020 12:26, Stanislav Maslovski wrote:
    gcc --version

    gcc (Debian 10.2.0-6) 10.2.0

    Это Sid

    Попробуй сделать

    gcc --verbose usbtest.c -lusb

    и

    gcc --verbose -lusb usbtest.c

    и сравни вывод.

    --
    Stanislav

    Хорошая идея! :)

    Вывод простой, во всем виновата опция "--as-needed"
    которую теперь при линковке использует по умолчанию gcc.

    gcc-10 -Wl,--no-as-needed -lm math.c

    собирает нормально.

    Опытным путем нашел, что такое поведение начинается с gcc-9.
    gcc-8 работает без --as-needed.

    Ю.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From sergio@21:1/5 to Stanislav Maslovski on Fri Sep 4 21:10:02 2020
    On 04/09/2020 14:17, Stanislav Maslovski wrote:
    On Fri, Sep 04, 2020 at 01:40:43PM +0300, Anatoly Pugachev wrote:
    On Fri, Sep 4, 2020 at 1:12 PM sergio <sergio@outerface.net> wrote:
    , :

    https://stackoverflow.com/questions/45135/why-does-the-order-in-which-libraries-are-linked-sometimes-cause-errors-in-gcc

    , --as-needed "Importance of linking order"

    https://wiki.gentoo.org/wiki/Project:Quality_Assurance/As-needed


    , , ӣ , ӣ , --as-needed ?

    --
    sergio.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)