如何判断是否在mac上使用libc ++或libstdc ++构建了库?
我一直在使用otool -L,但这似乎没有显示出来(mac没有ldd)
如果我有X库,我想知道当我从GCC转到clang时是否需要重建它。我用GCC构建了许多库,mac库通常用clang AFAIK构建。
答案 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。