জিসিসি কি পাইথ্রেডের সাথে লিঙ্ক করতে পারবেন না?


17

আমি সম্প্রতি এক্সুবুন্টু ১১.১০ 64৪ বিট ইনস্টল করেছি তবে সবচেয়ে সহজ প্যাথড উদাহরণ সংকলন করতে আমার সমস্যা হচ্ছে।

কোডটি এখানে pthread_simple.c:

#include <stdio.h>
#include <pthread.h> 
main()  {
  pthread_t f2_thread, f1_thread; 
  void *f2(), *f1();
  int i1,i2;
  i1 = 1;
  i2 = 2;
  pthread_create(&f1_thread,NULL,f1,&i1);
  pthread_create(&f2_thread,NULL,f2,&i2);
  pthread_join(f1_thread,NULL);
  pthread_join(f2_thread,NULL);
}
void *f1(int *x){
  int i;
  i = *x;
  sleep(1);
  printf("f1: %d",i);
  pthread_exit(0); 
}
void *f2(int *x){
  int i;
  i = *x;
  sleep(1);
  printf("f2: %d",i);
  pthread_exit(0); 
}

এবং এখানে কম্পাইল কমান্ড

gcc -lpthread pthread_simple.c

ফলাফলগুলো:

lptang @ tlp-linux: ~ / test / test-pthread $ gcc -lpthread pthread_simple.c 
/tmp/ccmV0LdM.o: ফাংশনে `প্রধান ':
pthread_simple.c :( পাঠ্য + 0x2c): `pthread_create 'এর অপরিবর্তিত রেফারেন্স
pthread_simple.c :( টেক্সট + 0x46): `pthread_create '
pthread_simple.c :( টেক্সট + 0x57): `pthread_join '
pthread_simple.c :( টেক্সট + 0x68): `pthread_join '
সংগ্রহ 2: ld 1 প্রস্থান স্থিতি ফিরে এসেছে

কেউ কি জানেন যে কী কারণে সমস্যা হচ্ছে?


আপনার খালি রয়েছে তা স্ট্যাকেক্সচেঞ্জের দোষ কি প্রথম দুটি লাইনে অন্তর্ভুক্ত? #include <pthread.h>
13-24 এ 12

হ্যাঁ, আমি প্রাক পরিবেশ ব্যবহার করেছি। এটি এখন সঠিকভাবে প্রদর্শন করা উচিত।
chtlp


বিটিডাব্লু, দয়া করে সংকলন করুন -Wall, আপনি শিরোনাম অনুপস্থিত। (এবং sr_ সঠিক is)
মাদুর

উত্তর:


26

gccসংকলকটির সর্বশেষতম সংস্করণগুলিতে গ্রন্থাগারগুলি অবজেক্ট বা উত্স ফাইলগুলি অনুসরণ করে।

সুতরাং এটি সংকলন করা উচিত:

gcc pthread_sample.c -lpthread

সাধারণত যদিও pthread কোড এইভাবে সংকলিত হয়:

gcc -pthread pthread_sample.c

1
@ কার্লসন আপনি কি দয়া করে ব্যাখ্যা করতে পারেন যে কেবল pthread.hফাইলটি অন্তর্ভুক্ত করে রেফারেন্সগুলি সমাধান করার জন্য জিসিসির পক্ষে যথেষ্ট নয় কেন ?
কাজী ইরফান

2
@ আইয়ামক্র্যাসি কারণ ঘোষণাটি সংজ্ঞা হিসাবে একই নয়। প্রোগ্রামটি জানতে হবে যে কোনও নির্দিষ্ট ক্রিয়াকলাপ সম্পাদনকারী কোডটি কোথায়।
কার্লসন


0

নিম্নলিখিত কমান্ড ব্যবহার করে কোড সংকলন

gcc filename.c -lpthread -lrt

1
ওহে! এটি আপনার পক্ষে যদি উত্তরটি সম্পাদন করতে পারে তবে এটি কেন কাজ করে তা ব্যাখ্যা করতে এবং এটি ইতিমধ্যে স্বীকৃত উত্তরটি কভার না করে এমন কিছু কেন যুক্ত করে বলে আপনি হাইলাইট করতে পারেন তা সহায়ক।
ধাগ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.