Подтвердить что ты не робот

Была создана библиотека с libС++ или libstdС++ на Mac

Как узнать, была ли библиотека построена с libС++ или libstdС++ на mac?

Я использую otool -L, но это, похоже, не показывает его (у mac нет ldd)

Если у меня есть библиотека X, я хочу знать, нужно ли мне ее перестроить, когда я перехожу из GCC в clang. Я создал несколько библиотек с GCC, Mac-библиотеки, как правило, построены с clang AFAIK.

4b9b3361

Ответ 1

Статическая библиотека: nm -a helloworld.a | grep __1

Если вы видите строки, содержащие __1, например. __121__basic_string, то библиотека была скомпилирована с помощью libС++. Однако, если ни одна из сигнатур функций не использовала типы стандартной библиотеки С++, это может не сработать.

Динамическая библиотека: otool -L helloworld

Ищите зависимость от libС++ или libstdС++ dylib.

Ответ 2

Для динамических библиотек otool -L будет показывать libstdc++, если он был создан против этой библиотеки (т.е. если это был С++).

Для статических библиотек вопрос не имеет смысла. Статические библиотеки не создаются для других библиотек.

И вам не нужно ничего перестраивать только потому, что вы меняете компиляторы. Там только одна, общесистемная библиотека С++ и имеет стабильный ABI.