سؤال كيفية التحقق من تثبيت المكتبة؟


في لينكس ، كيف أتحقق من تثبيت المكتبة أم لا؟ (من سطر الأوامر بالطبع).

في حالتي المحددة الآن ، أريد التحقق من تثبيت libjpeg.


139
2017-08-16 16:02


الأصل


ما التوزيع الذي تستخدمه؟ - radius


الأجوبة:


للقيام بهذا بطريقة مستقلة عن التوزيعة * يمكنك استخدام ldconfig مع grep ، كما يلي:

ldconfig -p | grep libjpeg

إذا لم يتم تثبيت libjpeg ، فلن يكون هناك خرج. إذا تم تثبيته ، فستحصل على سطر لكل إصدار متاح.

استبدل libjpeg بأية مكتبة تريدها ، ولديك طريقة عامة ، مستقلة عن الاستقلالية * للتحقق من توفر المكتبة.

إذا لم يتم تعيين المسار إلى ldconfig لأي سبب من الأسباب ، يمكنك محاولة استدعائه باستخدام مساره الكامل ، عادةً /sbin/ldconfig.

** 99٪ من المرات *


175
2018-06-06 22:19



يجب قبول هذا كإجابة. عظيم!
لا يمكن استخدام هذا للتحقق من إصدار مطور البرامج (رؤوس) مكتبة ، أليس كذلك؟ - andig
يمكنك تحديدها 99٪ من المرات؟ bash: ldconfig: command not found على ديبيان x64 جيسي مع xfce! هذا هو بيان ديبيان الموصى به على موقع ديبيان ... - Tomáš Zato
@ TomášZato: ldconfig غير متاح (command not found تظهر) إذا حاولت تشغيلها دون أن تكون مستخدمًا متميزًا. - Gauthier
/sbin/ldconfig -p يعمل لي دون الحاجة إلى أن يكون الجذر. - Pedro Gimeno


يمكنك التحقق من مدير الحزم الخاص بالتوزيع (aptitude، yum، ...) ولكن بما أنك لم تعط التوزيع ، فلا يمكنني منحك الأمر الصحيح.

يمكن أن يكون هناك طريقة أخرى للتشغيل gcc -ljpegإذا حصلت على "ld: library not found for -ljpeg" فهذا يعني أن gcc لم تعثر على المكتبة (ولكن هذا لا يعني أنها غير مثبتة) ، إذا حصلت على شيء مثل "رموز غير محددة:" _main "، المشار إليه من: ... "هذا يعني أنه تم العثور على libjpeg.

locate libjpeg; ls /usr/lib/libjpeg*; ls /lib/libjpeg* هي طريقة أخرى لمعرفة ما إذا كان lib في تثبيت في النظام

هناك العديد من الطرق الأخرى للتحقق من ذلك ، إذا قمت بتزويدنا بمزيد من السياق (لماذا تحتاج إلى التحقق مما إذا تم تثبيت libjpeg) فيمكننا منحك الحل الأفضل لحالتك الخاصة.


32
2017-08-16 16:16



كيف يمكن العثور عليه باستخدام aptitude؟ - BBK


أنا استخدام أين هو خدمة.
عينة:

l1feh4ck3r @ xxx: ~ $ whereis libjpeg
libjpeg: /usr/lib/libjpeg.so /usr/lib/libjpeg.a /usr/lib/libjpeg.la

16
2017-08-17 01:00





للتوزيع القائم على deb يمكنك القيام به

dpkg -s packagename

أو إذا كنت تعرف اسم الملف فقط ، استخدمه

locate filename

اسم الملف هو عادة libsomething.so [.version].


8
2017-08-16 16:28



يمكن أن يكون اسم الملف أيضًا مثل "libsomething.a" للإصدار الثابت. - radius
وجدت dpkg -s محدودة في المرافق ، لأنها تريد اسم الحزمة الفعلية ، والتي قد تختلف بمهارة أو بشكل كبير من المكتبة نفسها. أنا أستعمل dpkg -s|grep LIBRARY - Drew Stephens
dinomite apt-file صديقك :) - radius


انا استعمل هذا:

gcc -lpng

عندما يتم تثبيت lib ، فإنه ينتج:

undefined reference to 'main'

عندما يكون ال lib ليس المثبتة:

cannot find -lpng

8
2018-03-31 14:50





في أنظمة Redhat ، يمكن استخدام pkg-config للتحقق مما إذا كانت المكتبة مثبتة أم لا. تقوم العديد من الثنائيات rpm بالفعل بإجراء نفس عمليات الفحص قبل الشروع في التثبيت ، لذلك يمكننا الاعتماد بشكل معقول على صحتها.

pkg-config --cflags jpeg

pkg-config --libs jpeg

pkg-config --cflags "jpeg >= 1.0.0" # for version check
pkg-config  --modversion jpeg | awk -F. '{ printf "0x%02X%02X%02X\n",$1,$2,$3 }' #version check

3
2018-02-07 09:35





يتم ذلك عن طريق أدوات التكوين على لينكس في كل وقت.

انظر الى هذا البرنامج التعليمي حول autoconf و KDevelop.

الحيل الأخرى سوف تستخدم الأوامر مثل ldconfig و dpkg.


1
2017-08-16 16:11





يمكنك أيضًا تجربة استخدام dpkg للتحقق مما إذا كان مثبتًا أم لا.

dpkg --list | grep [some_key_words_of_your_lib]

الى جانب ذلك ، على CentOS ، يمكنك أن تجرب هذا.

rpm -qa [lib_name]


0
2017-10-25 08:09



ملاحظة: سوف نعمل فقط على توزيعات ديبيان - ALex_hha
ALex_hha نعم ، شكرًا لك ، يجب التأكيد على ذلك. على أنظمة CentOS أو القبعة الحمراء ، استخدم pkg-config في حين أن. - Scott Yang