Это печать из-за ключа -u.
в справочной странице ldd
-u, --unused
Print unused direct dependencies. (Since glibc 2.3.4.)
Что такое неиспользованная прямая зависимость (мне это кажется противоречивым)?
Это ИМХО -> библиотека, которую вы создали бинарную, которая была не нужна.
т.е. * +1008 *
gcc -L<LD_PATH> -Wall -o assistant assistant.c -lA -lB -lC
будет перечислять все A B C как зависимости, но они не могут быть фактически использованы в двоичном виде.
Главным образом причина - универсальные LDFLAGS в Makefile.
Можно ли узнать, действительно ли Qt Assistant требует неиспользованного
прямая зависимость (кроме запуска и ожидания ошибки)?
НЕТ Я думаю, что его можно использовать только тогда, когда вы будете вызывать определенную функцию.
также есть шанс, что вы можете использовать это, не увидит ошибку.
Тем не менее, если вы решите это сделать. есть безумный путь. список всех вызванных функций и затем проверка, какие библиотеки нужны. (нет уверенности в этом, но я думаю, что на основе аналогичной логики ldd печатает это.)
в соответствии с man-страницей ldd может работать в двоичном формате. Так что в принципе может быть сценарий, который вы упомянули. но не экстенсивно.
Be aware, however, that in some circumstances, some versions of
ldd may attempt to obtain the dependency information by directly
executing the program. Thus, you should never employ ldd on an
untrusted executable,
since this may result in the execution of arbitrary code.
В чем именно разница между приведенными выше командными строками? Зачем
первый список libQt5Sql, а второй нет?
Разница составляет -r
-r, --function-relocs
Perform relocations for both data objects and functions, and
report any missing objects or functions (ELF only).
Короче говоря, он обрабатывает загруженные библиотечные функции.
Рекомендуется использовать ldd -u -r
в этой ошибке на redhat.
Чтобы узнать больше об обработке перемещения, прочитайте этот документ Oracle.