[Suzaku:02057] マルチスレッドでのエラー

Nobuaki Sugishima email@hidden
2010年 12月 17日 (金) 12:02:09 JST


杉島と申します。

Ethernetの受信プログラムを作っています。

Socketのプログラムで使われている
recvSize = recv(fd, buf, MAXDATA, 0);
でフリーズしてしまいました。recvはDefaultではBloking型なので、データが到着するまで抜けないのは当然らしいです。

select文ではなく、受信プログラムの別スレッド化で対処することを試みています。

void* waitReceiveThread(void* pParam){
・・・・
    recvSize = recv(fd, buf, MAXDATA, 0);
・・・・
}

を定義、
 pthread_t tid;
 int status=pthread_create((&tid, NULL, waitReceiveThread, NULL);
でスレッドを生成します。

そのまえに
#include <pthread.h>を加え、
Makefileに
LDLIBS=-lpthread を追加しています。

これでコンパイルは通ります。
しかし実行段階で
『./prg: error while loading shared libraries: libpthread.so.0: cannot open 
shared object file: No such file or directory』
が出てしまいます。

ネットで検索したところ
http://armadillo.atmark-techno.com/faq/libpthread_not_found
『FAQ : libpthreadが見つからず、エラーになります』

を発見しました。

『と表示されて失敗する場合、開発環境にある/usr/arm-linux/lib/libpthread-0.10.soを、Armadillo-9に転送後 /libディレクトリに移動し、このファイルへのシンボリックリンク 
(libpthread.so.0)を作成してください。』

しかしlibpthread-0.10.soのある場所を発見できません。

以上の手続きが妥当なのかわかりません。
解決策があれば、手順を(詳細に)お教え願えれば幸いです。

sz410
atde2-20090403
です。





suzaku メーリングリストの案内