LIBC удален из циклической группы зависимостей во время связыванияC++

Программы на C++. Форум разработчиков
Anonymous
LIBC удален из циклической группы зависимостей во время связывания

Сообщение Anonymous »

Я перекрестно компиляюсь исполняемым файлом на Linux, чтобы нацелиться на Cortexa72. Исполняемый файл связывается с пакетом поддержки совета директоров, сгенерированного через программное обеспечение AMD Vitis. Из -за циклических зависимостей, присутствующих в библиотеках пакета поддержки платы (или неверного порядка связывания), я использую следующий код Cmake для выполнения связывания: < /p>

Код: Выделить всё

...
target_link_options(
myexe.elf PRIVATE
-T ${LINKER_SCRIPT} "-Wl,--start-group"
-lmylibA -lmylibB ... -lc -lgcc -lstdc++
"-Wl,--end-group"
)
...
< /code>
Однако во время связывания линкера жалуется, что он не может разрешить некоторые символы, поскольку они не определены (в данном случае системные вызовы, такие как, _close ...). Эта ошибка, кажется, имеет смысл, как следующий вызов линкера < /p>
aarch64-none-elf-g++ .... -Wl,--start-group ... -lc -lgcc -lstdc++ -Wl,--end-group ...
< /code>
приводит к удалению LIBC из «Start-end-группы» (группа циклических зависимостей): < /p>
collect2 ... --start-group ... -lgcc -lstdc++ --end-group ... -lc ...
< /code>
В этом контексте у меня есть два вопроса: < /p>

 Почему LIBC удаляется из «стартовой группы», несмотря на явное включение (так как я не так знаком с проектом GCC, я еще не нашел код в GCC. "Start-end-group" (с помощью-Start-Group ... -lc -lc ...-end-group 
результаты-start-group ... -lc ...->

Подробнее здесь: https://stackoverflow.com/questions/796 ... ng-linking

Вернуться в «C++»