次のコードを使用して2つのスレッドを作成しました。
//header files
#include <pthread.h>
struct thread_arg
{
int var1;
int var2;
};
void *serv_com(void *pass_arg)
{
struct thread_arg *con = pass_arg;
//required statements irrelevant to the issue
pthread_exit(NULL);
}
void *cli_com(void *pass_arg)
{
struct thread_arg *con = pass_arg;
//required statements irrelevant to the issue
pthread_exit(NULL);
}
int main()
{
pthread_t inter_com;
//necessary code
while(1)
{
th_err_s = pthread_create(&inter_com, NULL, serv_com, (void *)&pass_arg);
th_err_c = pthread_create(&inter_com, NULL, cli_com, (void *)&pass_arg);
if (th_err_s || th_err_c)
{
printf("Alert! Error creating thread! Exiting Now!");
exit(-1);
}
}
pthread_exit(NULL);
return 1;
}
次に、次のコマンドを使用して、上記のコードをLinuxでコンパイルしました。
gcc -o sample sample.c
次のエラーメッセージが返されました。
inter.c:(.text+0x374): undefined reference to `pthread_create'
inter.c:(.text+0x398): undefined reference to `pthread_create'
collect2: ld returned 1 exit status
このファイルを正しくコンパイルするにはどうすればよいですか。whileループ内のすべてをコメント化したとき、プログラムは正しくコンパイルされ、pthread_create構文が正しいことを確認したので、構文エラーなどはないと確信しています。ファイルをコンパイルするために他のコマンドを発行する必要がありますか?
編集:上記のコードで2つのスレッドを作成することに問題はありますか?プログラムは、実行されるとエラーメッセージを表示して終了します。考えられる問題は何で、どうすれば解決できますか?前もって感謝します。