用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文件本身的問題)