如何判断一个库是在 mac 上使用 libc++ 还是 libstdc++ 构建的?
我一直在使用otool -L,但这似乎没有显示出来(mac没有ldd)
如果我有库 X,我想知道在从 GCC 迁移到 clang 时是否必须重建它。我已经用 GCC 构建了许多库,mac 库通常是用 clang AFAIK 构建的。
静态库:nm -a helloworld.a | grep __1
如果您看到包含 的行__1
,例如__121__basic_string
,则该库是使用 libc++ 编译的。但是,如果没有一个函数签名使用 C++ 标准库类型,那么这可能不起作用。
动态库:otool -L helloworld
寻找对 libc++ 或 libstdc++ dylib 的依赖。
对于动态库,otool -L
将显示libstdc++
它是否是针对该库构建的(即,如果它是 C++)。
对于静态库,这个问题没有意义。静态库不是针对其他库构建的。
而且你不应该仅仅因为你正在改变编译器而重建任何东西。只有一个系统范围的 C++ 库,它有一个稳定的 ABI。