我試圖建立自己的uClibc嵌入式系統。我遇到了一些問題,但2天后,我解決了所有問題。剩下的只有一個:pthread
無法正常工作。 下面是簡單的程序,從蟒蛇的配置腳本:Linux + uClibc + pthread(C):應用程序凍結在最後
#include <pthread.h>
void* routine(void* p){return NULL;}
int main(){
pthread_t p;
if(pthread_create(&p,NULL,routine,NULL)!=0)
return 1;
(void)pthread_detach(p);
return 0;
}
在我的基於glibc的系統,它運行,然後退出。 但我的基於uClibc的系統上運行,結束線程和凍結:
[Thread debugging using libthread_db enabled]
[New Thread 0x801 (LWP 17631)]
[New Thread 0x402 (LWP 17632)]
[Thread 0x402 (LWP 17632) exited]
[Thread 0x801 (LWP 17631) exited]
^C
Program received signal SIGINT, Interrupt.
0xb7f768e7 in sigsuspend() from /lib/libc.so.0
我想無論新老的LinuxThreads,沒有一次成功。你有好主意嗎?
編輯:隨機只
#include <pthread.h>
#include <stdio.h>
void* routine(void* p){printf("AAA!\n");return NULL;}
int main(){
pthread_t p;
pthread_create(&p,NULL,&routine,NULL);
printf("BBB!");
(void)pthread_detach(p);
pthread_exit(0);
exit(0);
}
打印,然後凍結(glibc的系統打印兩個 「AAA!」 和:
OK,我發現了一些更多的信息 「AAA!」 「BBB」!訂購)。所以我認爲uclibc pthreads本身肯定有一些錯誤。任何其他幫助? 嘗試了一些其他的pthread測試,最終每個測試都凍結了。 編輯:我沒有找出爲什麼這個髮型,但我複製了預編譯的uclibc,現在它的作品。
我在ARM cortex_A8平臺上用uClibc 0.9.30.2測試了你的代碼,它工作正常。 –