Привет)
Билжу свой код под Linux с помощью clang используя стандартную либу libstdc++.
Хочу теперь попробовать сбилдить всё с помощью -stdlib=libc++.
1. Обязательно ли линкеру проставлять тоже этот флаг? У кланга во всех примерах они по факту сразу билдят один файл, поэтому непонятно.
2. У меня есть сторонняя либа без сорцов. Динамическая и зависит от libstdc++. Правильно ли я понимаю, что если я у этой либы использую только публичный интерфейс и там нет ничего из std::, то всё будет норм?
Я так понял, что -stdlib=libc++ в ключах компилятору - это указание не использовать стандартные заголовочные файлы, а брать их из libc++, а этот же ключ линкеру - линковаться с libc++. Я проверил с помощью Bazel, если указать этот флаг только в BAZEL_CXXOPTS то компилирует с заголовочными файлами из libc++, а линкует с libstdc++ (ну и ругается, что многие определения не найдены), если добавить в BAZEL_LINKLIBS путь к libc++, то получившийся бинарник зависит и от libstdc++, и от libc++. Флаг BAZEL_LINKOPTS="--stdlib=libc++" необходим, чтобы собрать бинарник, не зависящий от libstdc++