সি ++ ত্রুটি: 'ক্লক_জেটটাইম' এবং 'ক্লক_সেটটাইম'


157

আমি উবুন্টুতে বেশ নতুন, তবে কাজটি করার মতো মনে হচ্ছে না। এটি আমার স্কুলের কম্পিউটারগুলিতে দুর্দান্ত কাজ করে এবং আমি জানি না আমি কী করছি না। আমি ইউএসআর / অন্তর্ভুক্ত এবং টাইম.h পরীক্ষা করে দেখেছি ঠিক আছে। কোডটি এখানে:

#include <iostream>
#include <time.h>
using namespace std;

int main()
{
    timespec time1, time2;
    int temp;
    clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &time1);
    //do stuff here
    clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &time2);
    return 0;
}

আমি বিল্ডিং এবং চালানোর জন্য কোড আই ব্লকগুলিকে আমার আইডিই হিসাবে ব্যবহার করছি। কোনও সহায়তা দুর্দান্ত হবে, ধন্যবাদ।


-D_XOPEN_SOURCE=600আপনারও প্রায়শই প্রয়োজন । এছাড়াও স্ট্রোক টাইমস্পেক না জানার জন্য জিসিসি -std = c99 এর সাথে অভিযোগ দেখুন
jw

উত্তর:


285

-lrtG ++ কমান্ড লাইনের শেষে যুক্ত করুন । লিবার্ট.সো "রিয়েল টাইম" ভাগ করা লাইব্রেরিতে এই লিঙ্কগুলি।


যা আমি ম্যানুয়ালি সংকলন করি তা কার্যকর হয় - কোডব্লকগুলিতে আমি কীভাবে এটি স্বয়ংক্রিয় করব?
নাসস্পিনস্কি

7
প্রকল্পটি চেষ্টা করুন -> বিল্ড অপশন -> লিংকার সেটিংস; তারপরে লাইব্রেরি আরটি যোগ করুন
দিমিত্রি ইউদাকভ

আপনার পরামর্শটি আমার পক্ষে ঠিক কাজ করে..আমি এতে নতুন C... কী করে -lrt?
noufal

3
এটি এই যৌথটি বন্ধ g++ -o main -lrt main.cppকরার জন্য দুঃখিত, তবে আপনি কি এটি একটি সম্পূর্ণ উদাহরণে ব্যবহার করতে পারেন, এমন কিছু আমার পক্ষে কাজ করে না
puk

4
@puk নির্বাণ চেষ্টা করুন -lrtপরে main.cppশেয়ার করা লাইব্রেরির অর্ডার ব্যাপার - - দেখুন এই বা যে আরো বিস্তারিত জানার জন্য
দিমিত্রি Yudakov

42

উদাহরণ:

c++ -Wall filefork.cpp -lrt -O2

gccসংস্করণ ৪.6.১ এর জন্য -lrtঅবশ্যই ফাইলফোরক.পি.পি এর পরে থাকতে হবে অন্যথায় আপনি একটি লিঙ্ক ত্রুটি পান।

কিছু পুরানো gccসংস্করণ অবস্থান সম্পর্কে চিন্তা করে না।


9
আপনাকে ধন্যবাদ, -lrtসঠিক অবস্থানে না থাকা আমাকে মাথাব্যথার কারণ করেছিল। এই পাগল (ভাল, অনেকে অপরাধী বলে) সেট করার জন্য কোনও প্রেরণা আছে কি?
এভিও

@ অ্যাভিও - historicalতিহাসিক কারণে অর্ডারটি গুরুত্বপূর্ণ। সংকলকগণ প্রতিটি যুক্তিকে ক্রমানুসারে প্রক্রিয়া করতে ব্যবহৃত হত। কারণ গ্রন্থাগারগুলি "নরম" রেফারেন্স হিসাবে *.oযুক্তিগুলিতে "হার্ড" রেফারেন্সের বিপরীতে , লাইব্রেরি ফাংশনগুলি অগ্রাহ্য করা হয় যদি না সেগুলি আগে উল্লেখ করা হয়, যার অর্থ বাম দিকে নয়।
লাকাটা 21

28

গ্লিবসি সংস্করণ ২.১17, গ্রন্থাগারের সংযোগের -lrtআর প্রয়োজন নেই।

clock_*এখন প্রধান C লাইব্রেরিতে অংশ। আপনি গ্লিবসি ২.১17 এর পরিবর্তনের ইতিহাস দেখতে পারবেন যেখানে এই পরিবর্তনটি করা হয়েছিল যেখানে এই পরিবর্তনের কারণ ব্যাখ্যা করা হয়েছে:

+* The `clock_*' suite of functions (declared in <time.h>) is now available
+  directly in the main C library.  Previously it was necessary to link with
+  -lrt to use these functions.  This change has the effect that a
+  single-threaded program that uses a function such as `clock_gettime' (and
+  is not linked with -lrt) will no longer implicitly load the pthreads
+  library at runtime and so will not suffer the overheads associated with
+  multi-thread support in other code such as the C++ runtime library.

আপনি যদি গ্লিবিসি আপগ্রেড করার সিদ্ধান্ত নেন, তবে নতুন গ্লিবসি ব্যবহার করে কোনও সমস্যা আছে কিনা তা নিয়ে আপনি যদি উদ্বিগ্ন হন তবে আপনি গ্লিবিকের সামঞ্জস্যতা ট্র্যাকারটি পরীক্ষা করতে পারেন ।

সিস্টেমে ইনস্টল করা গ্লিবসি সংস্করণটি পরীক্ষা করতে, কমান্ডটি চালান:

ldd --version

(অবশ্যই, আপনি যদি পুরানো গ্লিবসি ব্যবহার করেন (<2.17) তবে আপনার এখনও প্রয়োজন হবে -lrt))


26

আমিও একই ত্রুটির মুখোমুখি হয়েছি। আমার লিঙ্কার কমান্ডটিতে আরটি লাইব্রেরি অন্তর্ভুক্ত ছিল -lrtযা সঠিক এবং এটি কিছুক্ষণ কাজ করছে was কুবুন্টু পুনরায় ইনস্টল করার পরে এটি কাজ করা বন্ধ করে দেয়।

-lrtপ্রকল্পের অবজেক্ট ফাইলগুলির পরে পৃথক ফোরামের থ্রেডে প্রয়োজনীয় পরামর্শ দেওয়া হয়েছিল । চলন্ত-lrt কমান্ড শেষে আমার জন্য এই সমস্যা সংশোধন যদিও আমি কেন বিবরণ জানি না।


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