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文件本身的问题)