私自身のuClibc組み込みシステムを構築しようとしています。私はいくつかの問題に遭遇しましたが、2日後にすべてを解決しました。 1つだけ残っています:pthread
は正しく動作しません。ここで はPythonのconfigureスクリプトから簡単なプログラムです:私はglibcベースのシステムで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;
}
、それが実行され、終了します。 しかし、私の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のを試してみましたが、それらのどれも働きました。アイデアはありますか?
は編集:
OK、私はいくつかのより多くの情報が見つかりました: "!AAA"
#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を!" "BBB!"注文)。ですから、uclibc pthreads自体には何らかのエラーがあるはずです。その他のヘルプ? いくつかの他のpthreadテストを試してみて、それぞれのテストが終了しました。 編集:私はなぜこのhapenningですが、私は知りませんでしたが、私はプリコンパイルされたuclibcをコピーして、今すぐ動作します。
私はあなたのコードをARM cortex_A8プラットフォームのuClibc 0.9.30.2でテストし、正しく動作します。 –