clang++編譯時發生錯誤 - Linux

Table of Contents





先提供linux版本為:Linux Mint 17 Qiana



小弟目前在做專題中需要用到字串轉成點陣圖印出,故參考以下網頁
https://github.com/descent/progs/tree/master/cpp11_utf8



為了能編譯,照著以下網頁步驟安裝了clang與libc++
http://www.cnblogs.com/codemood/p/3142848.html



有先編譯hello world,順利的成功了也能執行

clang++ -g -stdlib=libc++ -std=c++11 -I/usr/include/c++/v1/
-I/usr/include/c++/v1/include/ `freetype-config --cflags` -Wall -W -I. -c
hello.cpp

clang++ -o hello hello.o -stdlib=libc++ -std=c++11 -I/usr/include/c++/v1/
-I/usr/include/c++/v1/include/ `freetype-config --libs`




在把字串轉點陣圖的main.cpp轉.o檔時跳出兩個警告,說有兩個變數沒在程式碼裡調用到
(我認為是沒有影響)
main1.cpp:76:6: warning: unused variable 'starty' [-Wunused-variable]
int starty = pen_y;
^
main1.cpp:75:6: warning: unused variable 'startx' [-Wunused-variable]
int startx = pen_x; //startx與 starty需定義 ...
^
2 warnings generated.




在把.o檔轉成執行檔時跳出錯誤:
xxs4129-Aspire-5750G xxs4129 # clang++ -o main1 main1.o -stdlib=libc++
-std=c++11 -I/usr/include/c++/v1/ -I/usr/include/c++/v1/include/
`freetype-config --libs`

/usr/bin/ld: main1.o: undefined reference to symbol
'__cxa_free_exception@@CXXABI_1.3'
//usr/lib/x86_64-linux-gnu/libstdc++.so.6: error adding symbols: DSO missing
from command line
clang: error: linker command failed with exit code 1 (use -v to see
invocation)




有去google過但還是看不懂如何解決

這是我用的 main1.cpp 跟原本的一樣只是自己為了讀懂多了蠻多註解
https://mega.co.nz/#!x4lR3Y6K!L8_Z5PmLnd_yYhewgQy1FZPsaDmU0MwqfUbffJs1wxQ


還請各位大大有空能幫忙看一下







--

All Comments

Rebecca avatarRebecca2015-04-01
編 main1.o 的時候有加 -stdlib=libc++ 嗎?
Tracy avatarTracy2015-04-04
hello 程式碼編譯要兩行似乎多此一舉
Mason avatarMason2015-04-06
clang++ -o main1 main.cppp ..... 不就可以了 ?
David avatarDavid2015-04-08
若你沒有其他特殊多個程式碼要編譯,不需要 -c 然後分開
Elizabeth avatarElizabeth2015-04-13
另外你的問題我比較想知道的是,你編譯一般的 c++ 程式
Joseph avatarJoseph2015-04-17
能夠正常工作嗎?
Queena avatarQueena2015-04-20
我是因為這個程式才去裝linux ,還是新手看不太懂指令編譯
Suhail Hany avatarSuhail Hany2015-04-22
k大說的編譯一般c++程式是說用上面clang++指令編譯嗎?
Faithe avatarFaithe2015-04-22
這樣說好了,原本沒有修改的版本,你可以正常編譯嗎
Agnes avatarAgnes2015-04-25
是的,用 clang++ 編譯一般的 c++ code
Kristin avatarKristin2015-04-26
我試過只要有用到 -stdlib=libc++ 就會跳出一樣的錯誤
Eden avatarEden2015-04-28
用c++版本的hello world也會跳出錯誤
Bethany avatarBethany2015-04-29
有點好奇是為了什麼功能才裝 libc++ 的嗎?
Wallis avatarWallis2015-05-04
在 wstring2utf8.h 裡有個<codecvt> 好像只有clang libc++有
Emma avatarEmma2015-05-06
k大的那張圖我有照著編譯,第一個原版的編譯跳出了好幾行
Hamiltion avatarHamiltion2015-05-07
未參考定義到,第二個編譯結果錯誤碼與圖上的差不多
Annie avatarAnnie2015-05-12
第3個結果跟第一個一樣跳出好幾行未參考定義到
Heather avatarHeather2015-05-14
用 clang++ -v 看看 #include 搜尋路徑
感覺可能他先搜到 libstdc++ 的了
Carol avatarCarol2015-05-19
X8xX6MLk9FfmpPSeQ 這是我clang++ -v的結果
Audriana avatarAudriana2015-05-24
clang++ -v 後面接本來拿來編譯的參數
Dora avatarDora2015-05-26
-I 那些也都要,真的有編譯東西它才會顯示搜尋路徑
Lydia avatarLydia2015-05-30
https://mega.co.nz/#!10tG0TzR!8AQVN4o51u-CynUN3VjDTRH6i9
DgEMfM41obJ6bjl2A 結果很長 所以就上傳txt檔
Susan avatarSusan2015-05-31
因為codecvt不在標準內,你該考慮boost的utf_to_utf
Robert avatarRobert2015-06-02
如果使用boost的utf_to_utf是單純更動wstring2utf8.h檔嗎?
Callum avatarCallum2015-06-04
剛看到 gcc 5 已經有 codecvt 了,可以嘗試看看
Irma avatarIrma2015-06-09
http://libcxx.llvm.org/ 有說在 Linux 可能要多加參數
Doris avatarDoris2015-06-11
看不太懂要加哪些參數
Kristin avatarKristin2015-06-15
我打了 clang++ -o main1 main1.cpp -stdlib=libc++ hellowo
Michael avatarMichael2015-06-20
d.cpp -nodefaultlibs -lc++ -lc++abi -lm -lc -lgcc_s -lgc
Jessica avatarJessica2015-06-21
c 但出現找不到-lc++abi 上面那個helloworld.cpp多打的
Tom avatarTom2015-06-26
為何你要加上 -nodefaultlibs 這個參數 @@
Dora avatarDora2015-07-01
我看不太懂,照網頁上的參數打
Xanthe avatarXanthe2015-07-04
在Using libc++ in your programs的linux下有兩種
我是參考那個的
Daniel avatarDaniel2015-07-06
沒關係,一般不用,不過你後面有指定其他的 lib 就還好
另外感覺你這程式好像搞很久了...
我這邊測試過都是在 mac os x 環境,clang 本身沒問題
clang 是 xcode 提供的,都可以正確編譯
Heather avatarHeather2015-07-08
我在 FreeBSD 測試,clang 預設用 libc++ 也很正常
Isabella avatarIsabella2015-07-11
boost 有替代方案,程式碼簡單改一下就好
只是重點你系統還需要有一份 boost
Dora avatarDora2015-07-13
主要都卡在linux跟clang++才編譯不過去吧,main的程式碼倒是
Lauren avatarLauren2015-07-17
讀懂了
Hedda avatarHedda2015-07-20
這樣吧.. 我剛剛幫你改一下改用 boost
Elma avatarElma2015-07-20
http://x.co/8f16Z 這是那個 wstring2utf8.h 檔案內容
記得你應該會用 apt-get install 裝上 boost 相關套件
Tom avatarTom2015-07-21
我這邊是裝上 libboost1.55-dev 就可以了
Ursula avatarUrsula2015-07-25
感謝大大,小弟正在安裝boost中,想問編譯時需要怎麼下指令呢
Yuri avatarYuri2015-07-28
忘記說還要裝 libboost 這個 lib, 上面那是標頭檔案
Kumar avatarKumar2015-07-31
最後 -l 不要忘記加上像是: -lboost_thread
Connor avatarConnor2015-08-03
結論我這邊 apt 裝上 libboost1.55-dev libboost1.55
Dorothy avatarDorothy2015-08-04
都懶用 mac os x or freebsd 應該也是解法 XD
Agnes avatarAgnes2015-08-09
終於成功了,感謝大大,小弟在這裡linux跟clang卡好久了