私はLinuxOSに非常に慣れていないので、共有ライブラリを設計しようとしています。魔女はスレッドを開始します。次のコードがあります。
関数init_logはセグメンテーション違反を発生させませんが、ログに記録を表示しませんが、誰かが理由を教えてくれますか?
関数pthread_createは、セグメンテーション違反を発生させます。derror()を使用してログに出力します。
void __attribute__ ((constructor)) setup();
void init_log()
{
setlogmask(LOG_UPTO(LOG_NOTICE));
openlog("TRACKER",LOG_CONS | LOG_PID | LOG_NDELAY, LOG_LOCAL1);
}
void loop()
{
while (0 == 0)
{
syslog(LOG_NOTICE,"OK BOSS");
sleep(1000);
}
}
void setup()
{
pthread_t thread_id;
init_log();
syslog(LOG_NOTICE,"LIB LOADED"); // this doesn't display
pthread_create(&thread_id,0,&loop,(void*)(NULL));
}
コンパイラーリンカーパラメーター
**** Build of configuration Debug for project gt_trackers ****
make all
Building target: libgt_trackers.so
Invoking: GCC C Linker
gcc -shared -o "libgt_trackers.so" ./main.o
Finished building target: libgt_trackers.so
**** Build Finished ****