Mac os下gcc編譯錯誤解決方案

用gcc編譯cpp文件:c++

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

出現如下錯誤:git

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++)。github

其餘解決方案包括在Xcode路徑下把libstdc++拷過來,可是我沒下Xcode,它有幾個G並且評價只有3分/5分bash

而後gcc -v看了一下本身是用homebrew裝的gcc,而後使用ui

 
  

IcarusdeMacBook-Pro:~ icarus$ which gccspa

 
  

/usr/bin/gcc3d

只有這樣能查看mac自帶的gcc可執行文件路徑,其他時候由於在~/.bash_profile中設置了gcc默認爲gcc-7(即便後來刪除當時的配置也沒用)。code

而後對比如下命令的輸出知道只要編譯時前綴爲/usr/bin/gcc就表示用的是gcc 4.2.1:blog

相似地,用g++編譯時也把前綴改成/usr/bin/g++便可。homebrew

編譯成功(有warning,是cpp文件自己的問題)

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

相關文章
相關標籤/搜索