Может ли соединение с одной и той же библиотекой дважды быть проблемой с g ++? - PullRequest
4 голосов
/ 17 февраля 2010

Я заметил, что когда я делаю свое приложение с помощью gcc и смотрю вывод во время фазы связывания, я вижу, что следующая библиотека включена дважды:

/ дома / RB01 / Opt / TRX-ГОЛОВА / ССАГПЗ / 4.2.4 / Библиотека /../ lib64 / libstdc ++. Так

И вот мне просто интересно, если это проблема с g ++ (gcc) или второй просто игнорируется?

Спасибо!

1 Ответ

7 голосов
/ 17 февраля 2010

Если символы в библиотеке уже разрешены, компоновщик их игнорирует. С общими библиотеками, как в этом случае, компоновщик на самом деле не связывается в любом случае.

В статических (.a) библиотеках несколько копий в командной строке могут быть полезны, если не очень симпатичны, например, если main обращается к libb, который обращается к libc, который обращается к чему-то в libb, а не к main:

ld main.o -lb -lc -lb

- это один из способов разрешения всех ссылок.

...