首先,此(和隨後的)錯誤(或多個):
cc1.exe: error: unrecognized command line option "-fstrip-debug"
通過加入strip --strip-debug
等,以在GCC命令行引起的。那就是明顯是虛假的事情,而且根本就不是你的谷歌搜索建議。 (您可能要清理你的問題,除去這些錯誤的引用。他們什麼都沒有做與你的問題)
它所做(或應該)建議,使用strip --strip-debug libpthread.so.0
代替使用strip libpthread.so.0
。
這是因爲GDB無法使用線程如果您的libpthread.so.0被完全剝離。
它可以被除去調試符號(這就是strip --strip-debug libpthread.so.0
所做的),但是剝離所有符號(這就是strip libpthread.so.0
所做的)是一個壞主意(TM)。
既然你(顯然)不是你自己建造libpthread.so.0
,你不應該剝奪它。
你應該但是驗證你的工具鏈的提供者沒有把它搞砸。下面的命令不應該報告no symbols
,並應在實際上打印匹配nptl_version
(作爲定義符號):
nm /path/to/target/libpthread.so.0 | grep nptl_version
假設一切都很好,到目前爲止,我們現在可以診斷你的問題,但...你沒沒有提供足夠的信息;(尤其是,當你運行GDB時,它應該打印一些類似using /path/to/libthread_db.so.0
的東西。你可能不得不在Eclipse中尋找GDB控制檯,或者你可能想從命令行運行GDB,它打印
libthread_db.so.0
(對於主機)的版本與lipthread.so.0
(對於目標)的版本匹配是至關重要的,它們都應該提供d由您的工具鏈供應商提供。
你的問題很可能是GDB根本找不到libthread_db.so.0
,或者它找到了錯誤的一個。
我不確定這是否與多線程有關,因爲通常用gdb調試它通常工作正常。你怎麼稱呼strip命令。 cc1.exe和gcc.exe前綴很奇怪。我會在bash中調用一個正常的命令。 – dmeister 2011-06-10 13:50:55
@dmeister這是我找到「解決方案」的網站[http://sourceware.org/bugzilla/show_bug.cgi?id=8963](http://sourceware.org/bugzilla/show_bug.cgi?id= 8963) 我調用它的方式是在eclipse中的C builder的其他標誌部分中添加了以下內容:調用爲: 'arm-none-linux-gnueabi-gcc.exe -O0 -g3 -Wall -c -fmessage-length = 0 strip --strip-debug libpthread.so.0' – avivas 2011-06-10 14:01:45
你可以嘗試它作爲一個單獨的調用,而不是將其添加到構建器中。請注意,這可能需要root權限,因爲它會更改系統文件(lbpthread.so.0)。 – dmeister 2011-06-10 14:41:34