يتعذر على setup.py ld العثور على المكتبة الموجودة، حيث تم تكوين المسارات
-
11-12-2019 - |
سؤال
أحاول تجميع واجهة cython إلى مكتبة C باستخدام هذا البرنامج التعليمي: استخدام مكتبات C مع Cython ولكن عندما أذهب لذلك مع:
python2 setup.py build_ext -i
فشل الرابط في العثور على المكتبة (اسم المكتبة هو libHorde3D
)
gcc -pthread -shared -Wl,-O1,--sort-common,--as-needed,-z,relro,--hash-style=gnu build/temp.linux-x86_64-2.7/horde3d.o -L/usr/lib -llibHorde3D -lpython2.7 -o /home/kiril/workspace/horde3d_python/cython/horde3d.so
/usr/bin/ld: cannot find -llibHorde3D
وهذا أمر غريب للغاية حيث أن libHorde3D.so موجود في /usr/lib وفي /opt/lib الخاص بي، وقد تم تكوين مسار البحث للرابط في /etc/ld.conf للنظر في هذه الدلائل وحاولت تعيين البحث المسار بالمتغيرات التاليةLD_LIBRARY_PATH، LIBRARY_PATH، LDFLAGS، وكذلك بتمريرها بشكل مستقيم:
python2 setup.py build_ext -i -L/opt/lib
لقد فعلت ldconfig -v
والمكتبة مدرجة:
/usr/lib:
libHorde3D.so -> libHorde3D.so
/opt/lib:
libHorde3D.so -> libHorde3D.so
لحسن التدبير حاولت تغيير المالك إلى "الجذر"، ولكن لا شيء.
ما الذي يجري هنا؟خاصة وأنني قادر على ربط المكتبة إذا تم استدعاء الرابط من Code::Blocks(عند العمل على بعض أكواد C++ التكميلية).
شكرا لك مقدما!
المحلول
أعتقد أنك تحتاج فقط إلى إزالة الكلمة lib
منك -l
حجة، لذلك تغييره إلى -lHorde3D