জিসিসি সহ দীর্ঘ ডাবল ফাংশন ব্যবহার করা


3

long doubleMath.h, যথা sqrtl, cabslএবং থেকে ম্যানিপুলেটিং ফাংশনগুলি বোঝার জন্য আমি উবুন্টুর জিসিসি পেতে খুব কষ্ট করছি cexpl। সংকলনের সময় আমি তাদের সবার জন্য যে বার্তাটি পাই তা হ'ল

undefined reference to `sqrtl'

-lmজিসিসির জন্য এই ক্রিয়াকলাপগুলি বোঝার জন্য আমাকে কমান্ড লাইনে আরও কিছু পতাকা লাগাতে হবে? এটি কি অনুপস্থিত প্যাকেজ? বা আমি যে সংস্করণটি ব্যবহার করছি তাতে কি সমস্যা আছে (ওয়ানিরিকের উপরে 4.6.1)?


1
তোমার কি আছে libc6-dev? আমি যা বলতে পারি তা এই এখানে কাজ করে: #include <math.h> \n int main() { sqrtl(1); } .. cc test.c -o test- আমার এমনকি প্রয়োজন হয় না -lm, এটি এটিকে চিত্রিত করে।
সিজিয়াম

হ্যাঁ আমি এটা আছে. এবং ফলাফলটি আমি ব্যবহার করি -lmবা না করি তা একই same
স্যার হোয়াইটআউট

আমি কেবল উপরের কোডটি পরীক্ষা করেছি এবং সমস্যাটি চিহ্নিত করার চেষ্টা করার সময় এটি টুইট করেছি। এটি প্রকৃতপক্ষে আসল আকারে কাজ করে, তবে যদি আমি কোনও long double x;ভেরিয়েবল ঘোষণা করি এবং এর জন্য একটি মান নির্ধারণ করি, তবে sqrtl (x);আমি যে সমস্যাটি প্রতিবেদন করেছি তা কল করুন।
স্যার হোয়াইটআউট

Sqrtl এর ম্যান পেজটি বলেছেন: ব্যবহার করুন cc -std=c99
অ্যাকোহার্ড

আমি চেষ্টা করেছিলাম, একই ফলাফল সঙ্গে। আমি জিসিসি ৪.৪ এ ফিরে এসে সমস্যাটি অদৃশ্য হয়ে গেছে, যা আমাকে মনে করে এটি একটি বাগ।
স্যার হোয়াইটআউট

উত্তর:


1

সমস্যাটি সেই সংস্থার সাথে যুক্তিগুলি সংকলকটির কাছে দেওয়া হয়।

স্বপ্নবিষয়ক তারিখে লিঙ্ক লাইব্রেরী বলা যেতে আছে পরে সোর্স ফাইল নাম:

gcc test.c -lm

এই পরিবর্তন এবং এর কারণগুলি এখানে আরও বিশদে বর্ণনা করা হয়েছে

ধ্রুবক মানগুলির ফাংশনগুলির জন্য সমস্যাটি উপস্থিত হয় না কারণ জিসিসি সেগুলির মধ্যে অন্তর্নির্মিত সংস্করণ রয়েছে। সুতরাং সংকলন -fno-builtinযুক্তি একটি ভেরিয়েবল হিসাবে একই ত্রুটি দেয়।

এই তথ্যের জন্য জেসন কন্টির জন্য ধন্যবাদ ।


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