→ lantw44: 編 main1.o 的時候有加 -stdlib=libc++ 嗎? 03/30 22:37
→ kenduest: hello 程式碼編譯要兩行似乎多此一舉 03/30 22:58
→ kenduest: clang++ -o main1 main.cppp ..... 不就可以了 ? 03/30 23:02
→ kenduest: 若你沒有其他特殊多個程式碼要編譯,不需要 -c 然後分開 03/30 23:03
→ kenduest: 另外你的問題我比較想知道的是,你編譯一般的 c++ 程式 03/30 23:22
→ kenduest: 能夠正常工作嗎? 03/30 23:23
→ x049: 我是因為這個程式才去裝linux ,還是新手看不太懂指令編譯 03/30 23:51
→ x049: k大說的編譯一般c++程式是說用上面clang++指令編譯嗎? 03/30 23:53
→ kenduest: 這樣說好了,原本沒有修改的版本,你可以正常編譯嗎 03/31 00:00
→ kenduest: 是的,用 clang++ 編譯一般的 c++ code 03/31 00:01
→ x049: 我試過只要有用到 -stdlib=libc++ 就會跳出一樣的錯誤 03/31 00:08
→ x049: 用c++版本的hello world也會跳出錯誤 03/31 00:11
→ lantw44: 有點好奇是為了什麼功能才裝 libc++ 的嗎? 03/31 00:14
→ x049: 在 wstring2utf8.h 裡有個<codecvt> 好像只有clang libc++有 03/31 00:18
→ x049: k大的那張圖我有照著編譯,第一個原版的編譯跳出了好幾行 03/31 00:23
→ x049: 未參考定義到,第二個編譯結果錯誤碼與圖上的差不多 03/31 00:24
→ x049: 第3個結果跟第一個一樣跳出好幾行未參考定義到 03/31 00:26
→ lantw44: 用 clang++ -v 看看 #include 搜尋路徑 03/31 00:27
→ lantw44: 感覺可能他先搜到 libstdc++ 的了 03/31 00:27
→ x049: X8xX6MLk9FfmpPSeQ 這是我clang++ -v的結果 03/31 00:36
→ lantw44: clang++ -v 後面接本來拿來編譯的參數 03/31 00:39
→ lantw44: -I 那些也都要,真的有編譯東西它才會顯示搜尋路徑 03/31 00:47
→ x049: DgEMfM41obJ6bjl2A 結果很長 所以就上傳txt檔 03/31 00:51
→ sunneo: 因為codecvt不在標準內,你該考慮boost的utf_to_utf 03/31 00:52
→ x049: 如果使用boost的utf_to_utf是單純更動wstring2utf8.h檔嗎? 03/31 00:58
→ lantw44: 剛看到 gcc 5 已經有 codecvt 了,可以嘗試看看 03/31 01:25
→ x049: 看不太懂要加哪些參數 03/31 01:44
→ x049: 我打了 clang++ -o main1 main1.cpp -stdlib=libc++ hellowo 03/31 02:35
→ x049: d.cpp -nodefaultlibs -lc++ -lc++abi -lm -lc -lgcc_s -lgc 03/31 02:36
→ x049: c 但出現找不到-lc++abi 上面那個helloworld.cpp多打的 03/31 02:38
→ kenduest: 為何你要加上 -nodefaultlibs 這個參數 @@ 03/31 02:54
→ x049: 我看不太懂,照網頁上的參數打 03/31 02:56
→ x049: 在Using libc++ in your programs的linux下有兩種 03/31 02:59
→ x049: 我是參考那個的 03/31 02:59
→ kenduest: 沒關係,一般不用,不過你後面有指定其他的 lib 就還好 03/31 03:08
→ kenduest: 另外感覺你這程式好像搞很久了... 03/31 03:08
→ kenduest: 我這邊測試過都是在 mac os x 環境,clang 本身沒問題 03/31 03:08
→ kenduest: clang 是 xcode 提供的,都可以正確編譯 03/31 03:08
→ lantw44: 我在 FreeBSD 測試,clang 預設用 libc++ 也很正常 03/31 03:09
→ kenduest: boost 有替代方案,程式碼簡單改一下就好 03/31 03:10
→ kenduest: 只是重點你系統還需要有一份 boost 03/31 03:10
→ x049: 主要都卡在linux跟clang++才編譯不過去吧,main的程式碼倒是 03/31 03:10
→ x049: 讀懂了 03/31 03:11
推 kenduest: 這樣吧.. 我剛剛幫你改一下改用 boost 03/31 03:20
→ kenduest: 記得你應該會用 apt-get install 裝上 boost 相關套件 03/31 03:21
→ kenduest: 我這邊是裝上 libboost1.55-dev 就可以了 03/31 03:22
→ x049: 感謝大大,小弟正在安裝boost中,想問編譯時需要怎麼下指令呢 03/31 03:23
→ kenduest: 忘記說還要裝 libboost 這個 lib, 上面那是標頭檔案 03/31 03:27
→ kenduest: 最後 -l 不要忘記加上像是: -lboost_thread 03/31 03:31
→ kenduest: 結論我這邊 apt 裝上 libboost1.55-dev libboost1.55 03/31 03:32
→ kenduest: 都懶用 mac os x or freebsd 應該也是解法 XD 03/31 03:33
→ x049: 終於成功了,感謝大大,小弟在這裡linux跟clang卡好久了 03/31 05:13