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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM