Как решить "неопределенную ссылку на renameat2@GLIBC_2.28" (мой libc содержит этот символ с @@) - PullRequest
0 голосов
/ 09 ноября 2019

Я пытался интегрировать свою программу с QT. Однако я получил следующие ошибки компоновщика:

/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libQt5Core.so: undefined reference to `pow@GLIBC_2.29'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libQt5Core.so: undefined reference to `renameat2@GLIBC_2.28'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libQt5Core.so: undefined reference to `statx@GLIBC_2.28'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libQt5Widgets.so: undefined reference to `log@GLIBC_2.29'

Если я проверяю мои libc и libm с помощью readelf -a, я вижу, что мои общие объекты содержат эти символы, но с двумя @@. Например, libc:

Symbol table '.dynsym' contains 2361 entries:
   Num:    Value          Size Type    Bind   Vis      Ndx Name
   [...]
    44: 0000000000055d60   109 FUNC    WEAK   DEFAULT   14 renameat2@@GLIBC_2.28
   870: 00000000000eaf80   487 FUNC    GLOBAL DEFAULT   14 statx@@GLIBC_2.28

В чем может быть проблема, и как я могу решить эту проблему? В чем разница между @ и @@?

Мой компоновщик: GNU ld (GNU Binutils for Debian) 2.33.1

...