Mac os下gcc编译错误解决方案

用gcc编译cpp文件:

$ g++ transE.cpp -o transE -pthread -O3 -march=native

出现以下错误:

dyld: Symbol not found: __ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev Referenced from: $ANTSPATH/ANTS (which was built for Mac OS X 10.13) 
Expected in: /usr/lib/libstdc++.6.0.9.dylib in $ANTSPATH/ANTS Abort trap: 6

原因是现在用的gcc版本过高,已经用一个新的c++标准库lib++替换原来的libstdc++,要使用这个库的话需要让gcc编译时可以选定低版本gcc(低版本里有libstc++)。

其他解决方案包括在Xcode路径下把libstdc++拷过来,但是我没下Xcode,它有几个G而且评价只有3分/5分

然后gcc -v看了一下自己是用homebrew装的gcc,然后使用


IcarusdeMacBook-Pro:~ icarus$ which gcc


/usr/bin/gcc

只有这样能查看mac自带的gcc可执行文件路径,其余时候因为在~/.bash_profile中设置了gcc默认为gcc-7(即使后来删除当时的配置也没用)。

然后对比以下命令的输出知道只要编译时前缀为/usr/bin/gcc就表示用的是gcc 4.2.1:

类似地,用g++编译时也把前缀改为/usr/bin/g++即可。

编译成功(有warning,是cpp文件本身的问题)

参考:https://github.com/ANTsX/ANTs/issues/551

posted @ 2019-07-31 09:06  IcarusYu  阅读(1425)  评论(0编辑  收藏  举报