是一个在Mac上用libc ++或libstdc ++构建的库

时间:2012-06-16 14:21:41

标签: c++ macos clang

如何判断是否在mac上使用libc ++或libstdc ++构建了库?

我一直在使用otool -L,但这似乎没有显示出来(mac没有ldd)

如果我有X库,我想知道当我从GCC转到clang时是否需要重建它。我用GCC构建了许多库,mac库通常用clang AFAIK构建。

2 个答案:

答案 0 :(得分:8)

静态库nm -a helloworld.a | grep __1

如果您看到包含__1的行,例如__121__basic_string,然后使用libc ++编译库。但是,如果没有任何函数签名使用C ++标准库类型,那么这可能不起作用。

动态图书馆otool -L helloworld

寻找对libc ++或libstdc ++ dylib的依赖。

答案 1 :(得分:3)

对于动态库,otool -L如果是针对该库构建的,则显示libstdc++。(如果它是C ++)。

对于静态库,这个问题没有意义。静态库不是针对其他库构建的。

你不应该因为改变编译器而重建任何东西。只有一个系统范围的C ++库,它有一个稳定的ABI。