Связь с начальной / конечной группой: почему моя ссылка не работает, если некоторые библиотеки не остались вне группы - PullRequest
0 голосов
/ 06 июня 2018

Мне было поручено перенести работающую сборку Visual studio на gcc в Linux.

Решение имеет более 60 проектов.Чтобы связать окончательный exe-файл, требуется много статических библиотек, некоторые из которых построены решением, некоторые внешние библиотеки.

Я читал о том, почему порядок имеет значение для gcc (мое базовое понимание заключается в том, что в основном вам нужно заказать их такчто библиотеки, которым требуется функциональность, перечислены перед библиотеками, которые их предоставляют).

VS не заботится о порядке появления библиотек в командной строке, поэтому я не унаследовал значимый порядок для библиотекпоявляться.

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

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

То есть

-start-group lSomelibA lSomelibB ...  lSomelibX lSomelibY lSomelibZ-end-group 

не удалось с неразрешенным символом.

-start-group -lSomelibA -lSomelibB ... -lSomelibX end-group -lSomelibY -lSomelibZ

сработало

 -start-group lSomelibA lSomelibB ...  lSomelibX lSomelibY lSomelibZ-end-group lSomelibY lSomelibZ

Что повторяет и эти библиотеки тоже сработало.

Я читал о начальной / конечной группе, но не мог понять, зачем включать всебиблиотеки могут потерпеть неудачу.

Зачем оставлять библиотеку вне групповой работы, если включить ее не удалось?

Неразрешенная ссылка на ошибку символов GLIBCXX включает номер версии, точное сообщение изменяется при переупорядоченииЛИЭС.Я предполагаю, что что-то может быть определено более одного раза.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...