usr / bin / ld: -l <nameOfTheLibrary> খুঁজে পাওয়া যায় না


443

আমি আমার প্রোগ্রামটি সংকলনের চেষ্টা করছি এবং এটি এই ত্রুটিটি ফিরিয়ে দেয়:

usr/bin/ld: cannot find -l<nameOfTheLibrary>

আমার মেকফাইলে আমি কমান্ডটি g++এবং আমার লাইব্রেরির লিঙ্কটি ব্যবহার করি যা অন্য ডিরেক্টরিতে অবস্থিত আমার লাইব্রেরির প্রতীকী লিঙ্ক।

এটি কাজ করে দয়া করে যুক্ত করার জন্য কোনও বিকল্প আছে?


1
আরও তথ্য প্রয়োজন। আপনার প্রোগ্রামটি সংকলনের জন্য আপনি কোন আদেশ জারি করেছেন? আপনি মেক-
অ্যান

মেকফিল বা আপনার চালিত আদেশটি পোস্ট করুন।
অর্টউইন অ্যাঞ্জারমেয়ার

আমার আদেশটি হ'ল: g ++ - <options> objetc1.o objetc2.o objetc3.o objetc4.o -L <pathOfTheLibrary> -l <nameOfTheLibrary> -pthread -o myexe
ZoOo

4
আপনি যে লাইব্রেরিটি একই আর্কিটেকচারের সাথে নির্মিত (যেমন 32/64 বিট) দিয়ে সংযুক্ত করতে চান? আপনি যে লাইব্রেরিটি কাস্টম লাইব্রেরির সাথে সংযুক্ত করতে চান তা কি? লাইব্রেরির নামটি গুরুত্বপূর্ণ, যেহেতু এটি -lস্যুইচটি ব্যবহার করার সময় লাইব <নাম> দিয়ে শুরু করতে হবে (যেমন, libpthread.so আপনি ইতিমধ্যে লিঙ্ক করছেন)।
অর্টউইন অ্যাঞ্জারমেয়ার

1
সমস্যাটি লাইব্রেরিতে আমার প্রতীকী লিঙ্কে ছিল যা ভাল ছিল না! আপনার সাহায্যের জন্য ধন্যবাদ !
ZoOo

উত্তর:


196

আপনার লাইব্রেরির নাম যদি বলা হয় libxyz.soএবং এটি পথে অবস্থিত থাকে তবে বলুন:

/home/user/myDir

তারপরে এটি আপনার প্রোগ্রামে লিঙ্ক করতে:

g++ -L/home/user/myDir -lxyz myprog.cpp -o myprog

11
আমার গ্রন্থাগারটি একটি গতিশীল নয় (.so) কিন্তু একটি স্ট্যাটিক (.a)। সমস্যা থেকে আসে কি?
ZoOo

3
@ ZoOo এটিকে সাধারণত বিবেচনা করা উচিত নয়,
লিঙ্কারটি

7
আপনার লাইব্রেরির সাথে লিঙ্ক করার আরেকটি উপায় হ'ল আপনি লাইব্রেরির নামটি পুরো পথ দিয়ে সরাসরি জি ++ এর মতো নির্দিষ্ট করে দিতে পারেন .. /path/mylib.a
সৌরভ ভোলা

2
হ্যাঁ তবে এটি এখনও কাজ করে না। আমার গ্রন্থাগারটি একটি প্রতীকী লিঙ্ক, আমি মনে করি সমস্যাটি এসেছে কারণ আমি যখন অন্য ডিরেক্টরিতে লাইব্রেরিটি ব্যবহার করি তখন এটি কাজ করে!
ZoOo

2
আপনার প্রতীকী লিঙ্কটি সঠিকভাবে লাইব্রেরিতে প্রকৃত স্থানে ইঙ্গিত করছে ?? আপনি কি "এলএল" এর আউটপুট প্রতীকী লিঙ্কে পোস্ট করতে পারেন?
সৌরভ ভোলা

451

লিঙ্কার কী সন্ধান করছে তা নির্ধারণ করার জন্য, এটি ভার্ভোজ মোডে চালান।

উদাহরণস্বরূপ, জেড এলআইবি সমর্থন সহ মাইএসকিউএল সংকলনের চেষ্টা করার সময় আমি এই সমস্যার মুখোমুখি হয়েছি। সংকলনের সময় আমি এই জাতীয় ত্রুটি পেয়েছি:

/usr/bin/ld: cannot find -lzlib

আমি কিছু গুগলিং করেছি এবং একই ধরণের বিভিন্ন ইস্যুতে আগত রেখেছি যেখানে লোকেরা .so ফাইলটি আসলে আছে কিনা তা নিশ্চিত করে বলবে এবং যদি তা না হয়, তবে সংস্করণযুক্ত ফাইলটিতে একটি সিমিলিংক তৈরি করুন, উদাহরণস্বরূপ, zlib। so.1.2.8। তবে, আমি যখন যাচাই করেছি, zlib.so DID উপস্থিত রয়েছে। সুতরাং, আমি ভেবেছিলাম, অবশ্যই সমস্যা হতে পারে না।

আমি ইন্টারনেটসের অন্য একটি পোস্ট জুড়ে এসেছি যা LD_DEBUG = সব দিয়ে চালানোর পরামর্শ দিয়েছিল:

LD_DEBUG=all make

যদিও আমি ডিবাগিং আউটপুটটির একটি টন পেয়েছি, এটি আসলে সহায়ক ছিল না। এটি অন্য যে কোনও কিছুর চেয়ে বিভ্রান্তি যুক্ত করেছে। সুতরাং, আমি হাল ছেড়ে দিতে চলেছিলাম।

তারপরে, আমার একটি এপিফেনি ছিল। আমি আসলে ld কমান্ডের জন্য সহায়তা পাঠ্যটি যাচাই করার জন্য ভেবেছিলাম:

ld --help

সেখান থেকে, আমি বুঝতে পারি যে কীভাবে ভার্জোজ মোডে এলডি চালাতে হবে (এটি কল্পনা করুন):

ld -lzlib --verbose

এটি আমি পেয়েছি আউটপুট:

==================================================
attempt to open /usr/x86_64-linux-gnu/lib64/libzlib.so failed
attempt to open /usr/x86_64-linux-gnu/lib64/libzlib.a failed
attempt to open /usr/local/lib64/libzlib.so failed
attempt to open /usr/local/lib64/libzlib.a failed
attempt to open /lib64/libzlib.so failed
attempt to open /lib64/libzlib.a failed
attempt to open /usr/lib64/libzlib.so failed
attempt to open /usr/lib64/libzlib.a failed
attempt to open /usr/x86_64-linux-gnu/lib/libzlib.so failed
attempt to open /usr/x86_64-linux-gnu/lib/libzlib.a failed
attempt to open /usr/local/lib/libzlib.so failed
attempt to open /usr/local/lib/libzlib.a failed
attempt to open /lib/libzlib.so failed
attempt to open /lib/libzlib.a failed
attempt to open /usr/lib/libzlib.so failed
attempt to open /usr/lib/libzlib.a failed
/usr/bin/ld.bfd.real: cannot find -lzlib

ডিং, ডিং, ডিং ...

সুতরাং, অবশেষে এটি ঠিক করার জন্য আমি মাইএসকিউএলকে আমার নিজস্ব জেড এলআইবি সংস্করণ (বান্ডিল সংস্করণ নয়) দিয়ে সংকলন করতে পারি:

sudo ln -s /usr/lib/libz.so.1.2.8 /usr/lib/libzlib.so

ভাল খবর!


60
ধন্যবাদ, এটি সহায়ক ছিল। অন্যরা জিসিসি ব্যবহার করে তাদের প্রোগ্রামটি সংকলন করতে এবং লিঙ্ক করার জন্য (সরাসরি এলডি ব্যবহার না করে) -Xlinker --verboseলিডিতে এই বিকল্পটি পাস করার জন্য আপনি গিসি-র কমান্ড-লাইন যুক্তিতে যুক্ত করতে পারেন।

5
এটিও আমাকে সাহায্য করেছিল। আমার যে মেকফাইলটি ছিল তা কেবল স্ট্যাটিক লাইব্রেরিই প্রত্যাশা করছিল তাই এটি ব্যবহৃত হয়েছিল -Wl,-Bstatic। এটি অনুসন্ধানকে কেবল .a ফাইলগুলিতে সীমাবদ্ধ করে। ভার্বোস বিকল্পটি এটি পরিষ্কারভাবে দেখিয়েছে। একবার আমি সরানো -Wl,-Bstaticশেয়ার্ড লাইব্রেরিও অনুসন্ধান করা হয়েছিল।
micah94

2
আমি FreeBSD 'র 10. নতুন LLVM ঝনঝন CC ফর্মের একটি আর্গুমেন্ট লাগে আছি -Wl,--verboseএবং পাসের --verboselinker করতে।
ক্রিশ্চিয়ান ক্যাম্পবেল

7
এখন এটাকেই আমি নিখুঁত উত্তর বলি! অনেক ধন্যবাদ. এটি অনেক সময় সাশ্রয় করে। আমার মতো কাউকে সাহায্য করতে কেবল যুক্ত করতে। এটি পাথ সম্পর্কিত সমস্যাগুলিও ডিবাগ করতে ব্যবহৃত হতে পারে। নিশ্চিত হয়ে নিন যে আপনি কমান্ড সহ এল-এল <ডিরেক্টরি> ডিরেক্টরিতে> পথটি পরীক্ষা করেছেন, ld -L <path> -l <লাইব্রেরির নাম>
--verbose

2
@EdwardBlack এই দেখুন উত্তর । মূলত, জিসিসির জন্য, কেবল -Wl,--verboseলিঙ্কারে ভের্বোজ দেওয়ার জন্য যুক্ত করুন।
চেম্ব্রাড

46

প্রথমদিকে প্রয়োজনীয় লাইব্রেরি ইনস্টল করতে ব্যর্থ হওয়ার খুব সাধারণ প্রাথমিক সমস্যাটির কোনও উত্তর নেই বলে মনে হচ্ছে be

ডেবিয়ানিশ প্ল্যাটফর্মগুলিতে, যদি libfooঅনুপস্থিত থাকে তবে আপনি প্রায়শই এ জাতীয় কিছু দিয়ে এটি ইনস্টল করতে পারেন

apt-get install libfoo-dev

-devপ্যাকেজের সংস্করণ যেমন লাইব্রেরিতে লিঙ্কে সোর্স কোড কম্পাইল যেমন উন্নয়ন কাজ জন্য প্রয়োজন বোধ করা হয়, এমনকি তুচ্ছ উন্নয়ন হবে।

প্যাকেজ নামটির জন্য মাঝে মাঝে কিছু সাজসজ্জার প্রয়োজন হয় ( libfoo0-dev? প্রিফিক্স foo-devছাড়াই lib? ইত্যাদি), বা কোন প্যাকেজ কোনও নির্দিষ্ট ফাইল সরবরাহ করে তা সুনির্দিষ্টভাবে জানতে আপনার ডিস্ট্রোর প্যাকেজ অনুসন্ধানটি ব্যবহার করতে পারেন ।

(যদি এখানে একের বেশি থাকে তবে তাদের পার্থক্যগুলি কী তা আপনার খুঁজে বের করতে হবে oo সর্বোত্তম বা সর্বাধিক জনপ্রিয় বাছাই করা একটি সাধারণ শর্টকাট তবে কোনও গুরুতর উন্নয়নমূলক কাজের জন্য গ্রহণযোগ্য পদ্ধতি নয়))

অন্যান্য আর্কিটেকচারের জন্য (সবচেয়ে উল্লেখযোগ্যভাবে আরপিএম) অনুরূপ পদ্ধতি প্রয়োগ করা হয়, যদিও বিশদ আলাদা হবে।


3
এটি কেবলমাত্র একটি নতুন সমস্যাযুক্ত সার্ভার এবং পার্লের সাথে আমার একটি সমস্যা নিয়ে আমাকে সহায়তা করেছে। apt-get install libperl-devআমার জন্য এটি বাছাই। ধন্যবাদ :)
অ্যান্ড্রু নিউবি

1
এই! মেকফিলের সাথে ঝামেলা করার দরকার নেই
বায়রন হুইললক

এটি সম্ভবত সবচেয়ে সাধারণ সমাধান এবং আমাকে সেন্টোস on-তে ক্যাক্টি-মেরুদণ্ড সংকলন করতে সহায়তা করেছে A একটি সাধারণ yum install openssl-develসমাধান এটি।
djluko

1
আপনি যদি সিমলিংকটি শেষ করে দেখতে পান তবে এটি সেরা সমাধান, তাই অনুপস্থিত, তবে আপনার কাছে একটি সিমলিংক রয়েছে যেমন libfoo.so.6 -> libfoo.so.6.0.2 (উদাহরণস্বরূপ), দ্বারা সিমলিংক তৈরির পরিবর্তে হাত. (যার অর্থ আপনি প্যাকেজ লাইবফু ইনস্টল করেছেন তবে লাইবফু-দেব নয়)
dmaestro12

39

সংকলন সময়

যখন গ্রাম ++, বলছেন cannot find -l<nameOfTheLibrary>, এটা যে ছ ++, ফাইলের জন্য লাগছিল মানে lib{nameOfTheLibrary}.so, কিন্তু এটা এটি ভাগ লাইব্রেরির অনুসন্ধানের পাথ, যা ডিফল্টভাবে পয়েন্টে করার জন্য খুঁজে পাইনি /usr/libএবং /usr/local/libএবং অন্য কোথাও হয়তো।

এই সমস্যাটি সমাধান করার জন্য আপনাকে lib{nameOfTheLibrary}.soসেই অনুসন্ধানের পথগুলিতে লাইব্রেরি ফাইল ( ) সরবরাহ করতে হবে বা -Lকমান্ড বিকল্পটি ব্যবহার করা উচিত । -L{path}জি ++ (আসলে ld) {path}কে ডিফল্ট পাথের পাশাপাশি পাথের লাইব্রেরি ফাইলগুলি সন্ধান করতে বলে।

উদাহরণ: ধরে নিই যে আপনার কাছে একটি গ্রন্থাগার রয়েছে /home/taylor/libswift.soএবং আপনি এই অ্যাপ্লিকেশনটিকে এই লাইব্রেরিতে লিঙ্ক করতে চান। এই ক্ষেত্রে আপনার নিম্নলিখিত বিকল্পগুলির সাথে জি ++ সরবরাহ করা উচিত:

g++ main.cpp -o main -L/home/taylor -lswift
  • নোট 1 : -lবিকল্পটি তার শুরু এবং শেষের বাইরে lib এবং লাইব্রেরির নাম পায় .so

  • দ্রষ্টব্য 2 : কিছু ক্ষেত্রে, গ্রন্থাগারের ফাইলের নামটি এর সংস্করণ অনুসারে অনুসরণ করা হয়, উদাহরণস্বরূপ libswift.so.1.2। এই ক্ষেত্রে, g ++ লাইব্রেরির ফাইলও খুঁজে পায় না। এটিকে ঠিক করার জন্য একটি সাধারণ কাজটি libswift.so.1.2বলা হচ্ছে একটি প্রতীকী লিঙ্ক তৈরি করছে libswift.so


রানটাইম

আপনি যখন আপনার অ্যাপ্লিকেশনটিকে একটি ভাগ করা লাইব্রেরিতে লিঙ্ক করেন, আপনার অ্যাপটি চালানোর সময় লাইব্রেরির উপস্থিতি থাকা দরকার। রানটাইমের সময় আপনার অ্যাপ্লিকেশন (আসলে গতিশীল লিঙ্কার) এর লাইব্রেরিগুলিতে সন্ধান করে LD_LIBRARY_PATH। এটি পরিবেশের পরিবর্তনশীল যা পাথের একটি তালিকা সঞ্চয় করে।

উদাহরণ: আমাদের ক্ষেত্রে libswift.soউদাহরণ, ডায়নামিক linker খুঁজে পাচ্ছি না libswift.soযে LD_LIBRARY_PATH(যা ডিফল্ট সার্চ পাথ পয়েন্ট)। সমস্যা সমাধানের জন্য আপনি যে পরিবর্তনশীল যোগ করা উচিত সাথে পথ libswift.soরয়েছে।

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/taylor

আপনার পোস্টের জন্য ধন্যবাদ! আমি .soফাইলগুলি অনুলিপি করার মুহুর্ত পর্যন্ত আমি সমস্ত উত্তর উপেক্ষা করে চলেছি /usr/lib, তবে এটি আমার পক্ষে আকর্ষণীয় হয়ে উঠেছে যে exportসাহায্য করবে কিনা । makeদীর্ঘসময় ধরে চালিয়ে যাওয়ার পরে ইনস্টলেশন প্রক্রিয়া সত্ত্বেও , আরও একটি ত্রুটি ঘটেছে। এবার, .so.0ফাইল পাওয়া যায় নি, তবে উভয় .soএবং .so.0ফাইলই সেই ডিরেক্টরিতে ছিল যেখানে আমি উত্স থেকে নির্ভর প্যাকেজ তৈরি করেছি। আপনি কি এই সাহায্য করতে পারেন?
এ.আমাতভ

33

সংজ্ঞায়নের g++মাধ্যমে সংকলনের সময় বিকল্পটির সাথে মেকফিল পরিবর্তন করা উপযুক্ত নাও হতে পারে । আমি আমার অতিরিক্ত পাঠাগারটি রেখেছিলাম তাই আমি করেছি:makeLIBRARY_PATH-L/opt/lib

$ export LIBRARY_PATH=/opt/lib/

এবং তারপরে makeসফল সংকলন এবং লিঙ্কিংয়ের জন্য দৌড়ে গিয়েছিলেন ।

একটি ভাগ করা লাইব্রেরি দিয়ে প্রোগ্রামটি চালানোর জন্য সংজ্ঞা দিন:

$ export LD_LIBRARY_PATH=/opt/lib/

প্রোগ্রাম চালানোর আগে।


14

প্রথমে আপনার নামকরণের নিয়মটি জানতে হবে lxxx:

/usr/bin/ld: cannot find -lc
/usr/bin/ld: cannot find -lltdl
/usr/bin/ld: cannot find -lXtst

lcঅর্থ libc.so, lltdlঅর্থ libltdl.so, lXtstঅর্থ libXts.so

সুতরাং, এটা lib+ + lib-name+ +.so


নামটি জানাজানি হয়ে গেলে আমরা locateএই lxxx.soফাইলটির পথটি খুঁজে পেতে পারি ।

$ locate libiconv.so
/home/user/anaconda3/lib/libiconv.so   # <-- right here
/home/user/anaconda3/lib/libiconv.so.2
/home/user/anaconda3/lib/libiconv.so.2.5.1
/home/user/anaconda3/lib/preloadable_libiconv.so
/home/user/anaconda3/pkgs/libiconv-1.14-0/lib/libiconv.so
/home/user/anaconda3/pkgs/libiconv-1.14-0/lib/libiconv.so.2
/home/user/anaconda3/pkgs/libiconv-1.14-0/lib/libiconv.so.2.5.1
/home/user/anaconda3/pkgs/libiconv-1.14-0/lib/preloadable_libiconv.so

যদি আপনি এটি খুঁজে না পান তবে আপনাকে এটি ইনস্টল করতে হবে yum(আমি CentOS ব্যবহার করি)। সাধারণত আপনার কাছে এই ফাইলটি থাকে তবে এটি সঠিক জায়গায় লিঙ্ক করে না।


এটি সঠিক জায়গায় লিঙ্ক করুন, সাধারণত এটি হয় /lib64or/usr/lib64

$ sudo ln -s /home/user/anaconda3/lib/libiconv.so /usr/lib64/

সম্পন্ন!

রেফ: https://i-pogo.blogspot.jp/2010/01/usrbinld-cannot-find-lxxx.html


4
locateশুধুমাত্র এটি ইনস্টল করা এবং নিয়মিত চলমান থাকলে কাজ করে। findআপনার সম্পূর্ণ ডিস্কে একটি অপরিশোধিত কাজ চালানো হয় তবে অবশ্যই এটি সময় নিতে পারে। আপনি যদি নিজেকে ঘন ঘন এটি করে দেখেন তবে locateএই ক্রিয়াকলাপের (ইন্টারেক্টিভ, মানব) ব্যয়কে কম করার জন্য ইনস্টল করার বিষয়টি বিবেচনা করুন ।
ট্রিপলি

5

আপনি যখন আপনার প্রোগ্রামটি সংকলন করবেন তখন আপনাকে অবশ্যই লাইব্রেরির পাথ সরবরাহ করতে হবে; জি ++ এ -L বিকল্পটি ব্যবহার করুন:

g++ myprogram.cc -o myprogram -lmylib -L/path/foo/bar

1
লিঙ্কযুক্ত পতাকা দিয়ে তৈরি করা ccmakeযাতে আমাদের কোন সম্পত্তি পরিবর্তন করতে হবে Makefile? আমি আমার -lARToolkitPlusপতাকাটিকে একটি পথের সাথে যুক্ত করতে চাই।
শাশ্বত

2

প্রতীকী লিঙ্কটি গতিশীল লাইব্রেরিতে থাকলে এই ত্রুটিটিও ঘটানো হতে পারে, তবে উত্তরাধিকারসূত্রে কারণে -staticলিঙ্কের পতাকাগুলির মধ্যে উপস্থিত হয়। যদি তা হয় তবে এটি অপসারণ করার চেষ্টা করুন।


2

আপনার লাইব্রেরির অবস্থান পরীক্ষা করুন, উদাহরণস্বরূপ lxxx.so:

locate lxxx.so

যদি এটি /usr/libফোল্ডারে না থাকে তবে এটি টাইপ করুন:

sudo cp yourpath/lxxx.so /usr/lib

সম্পন্ন.


4
সিস্টেম ডিরেক্টরিতে লাইব্রেরিগুলি অনুলিপি করার ক্ষেত্রে আপনাকে সতর্কতা অবলম্বন করা উচিত।
পল ফ্লয়েড

2

ইতিমধ্যে প্রদত্ত উত্তরগুলি বাদে, এটিও হতে পারে যে * .so ফাইলটি বিদ্যমান তবে সঠিকভাবে নামকরণ করা হয়নি। অথবা এটি এমন ঘটনাও হতে পারে যে * .so ফাইলটি বিদ্যমান তবে এটি অন্য ব্যবহারকারীর / রুটের মালিকানাধীন।

সংখ্যা 1: অনুপযুক্ত নাম

আপনি যদি ফাইলটিকে লিঙ্ক করে থাকেন -l<nameOfLibrary> তবে লাইব্রেরির ফাইলের নামটি ফর্মের হওয়া আবশ্যক lib<nameOfLibrary> যদি আপনার কেবল <nameOfLibrary>.soফাইল থাকে তবে নাম পরিবর্তন করুন!

ইস্যু 2: ভুল মালিক

এটি যে সমস্যা নয় তা যাচাই করতে - করুন

ls -l /path/to/.so/file

ফাইলটি যদি রুট বা অন্য কোনও ব্যবহারকারীর মালিকানাধীন থাকে তবে আপনার এটি করা দরকার

sudo chown yourUserName:yourUserName /path/to/.so/file

1

আমি যে লাইব্রেরিটির সাথে লিঙ্ক করার চেষ্টা করছিলাম সেটি একটি মানহীন নাম (যেমন 'লিব' সহ উপস্থাপিত ছিল না) থেকে বেরিয়ে আসে, তাই তারা এটি সংকলন করার জন্য এই জাতীয় কমান্ড ব্যবহার করার পরামর্শ দিয়েছিল -

gcc test.c -Iinclude lib/cspice.a -lm


আমার কাছে এটি একটি আদর্শ নাম পেতে কেবল "
লিবিব

1

আমার ল্যাপটপের উবুন্টু তথ্য এখানে।

lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.2 LTS
Release:    18.04
Codename:   bionic

আমি বুস্ট_ফাইলে সিস্টেম এবং বুস্ট_সিস্টেমের জন্য .so ফাইলগুলি সন্ধান করতে অবস্থান ব্যবহার করি

locate libboost_filesystem
locate libboost_system

তারপরে .so ফাইলগুলিকে / usr / lib এর সাথে লিঙ্ক করুন এবং .so এ পুনরায় নামকরণ করুন

sudo ln -s /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.65.1 /usr/lib/libboost_filesystem.so
sudo ln -s /usr/lib/x86_64-linux-gnu/libboost_system.so.1.65.1 /usr/lib/libboost_system.so

সম্পন্ন! আর প্যাকেজ ভেলোসাইটো.আর সফলভাবে ইনস্টল করা হয়েছিল!


1

আমি একই ত্রুটি বার্তার মুখোমুখি হয়েছি।

আমি এটি cmockaহিসাবে নির্মিত soএবং এটি আমার এক্সিকিউটেবলের সাথে লিঙ্ক করার চেষ্টা করেছি। তবে ldসর্বদা নীচে অভিযোগ:

/ usr / bin / ld: -lcmocka খুঁজে পাচ্ছে না

দেখা যাচ্ছে যে এখানে তৈরি হওয়ার পরে 3 টি ফাইল তৈরি করা হয়েছে cmocka:

  1. libcmocka.so
  2. libcmocka.so.0
  3. libcmocka.so.0.7.0

1 এবং 2 টি প্রতীক লিঙ্ক এবং কেবল 3 টি আসল ফাইল।

আমি কেবল আমার লাইব্রেরি ফোল্ডারে 1 টি অনুলিপি করেছি, যেখানে ld3 টি পেতে ব্যর্থ হয়েছিল।

আমি সমস্ত 3 অনুলিপি করার পরে, ldকাজ।


"আমার লাইব্রেরী ফোল্ডার" এর অধীনে আপনার কী ফোল্ডারটি বোঝানো হয়েছে দয়া করে বলতে পারেন?
এ.আমাতভ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.