بناء المكتبة للتحقق من إطار اختبار C
-
16-12-2019 - |
سؤال
بدأت في الاستخدام يفحص إطار لاختبار تطبيق C.لفهم أفضل، ذهبت عبر المثال في حزمة الاختيار.إنه يعمل بشكل جيد، لكنني لست بحاجة إلى أدوات التشغيل التلقائي - أريد تجميعه بواسطة ملف Makefile الخاص بي (لأنني أريد أن أفهم عملية التحقق بشكل صحيح وأحتاج إلى استخدام تطبيقي النهائي كحزمة من نظام التشغيل).ربما يمكنني استخدام ملف Makefile الذي تم إنشاؤه تلقائيًا هناك، ولكن في الوقت الحالي، سيكون هذا هو الشيء الجديد التالي الذي يجب أن أتعلمه ولدي وقت محدود لإعداد اختبارات الوحدة.(ثم، بالطبع، أريد دراسة وفهم الأدوات اللازمة لإنشاء Makfile، واستخدام التكوين، وما إلى ذلك)
توجد مشكلة في إنشاء التطبيق باستخدام ملف Makefile الخاص بي، حيث لم أقم بربط الكائن لوظيفة التحقق:
/tmp/ccm7cniy.o: In function `test_money_create':
check_money.c:(.text+0x1e): undefined reference to `tcase_fn_start'
check_money.c:(.text+0x79): undefined reference to `_fail_unless'
check_money.c:(.text+0xcc): undefined reference to `_fail_unless'
لقد اكتشفت أنه في تطبيق المثال يوجد gcc مع obj.ملف check_money-check_money.o
, ، والذي تم إنشاؤه بواسطة gcc:
gcc -DHAVE_CONFIG_H -I. -I.. -g -O2 -MT check_money-check_money.o -MD -MP -MF .deps/check_money-check_money.Tpo -c -o check_money-check_money.o `test -f'check_money.c' || echo './'`check_money.c
وهنا مشكلتي:يستخدم التبعية check_money-check_money.Tpo
.تم إنشاء هذا الملف بواسطة الأمر ./configure
, ، الذي لا أستخدمه.
كيف يمكنني إنشاء بلدي .o
ملف للتحقق من البناء بنجاح؟ومن الضروري إنشاء هذا الملف لكل تطبيق؟لا يمكن أن يكون واحدا، في مكان ما في المكتبات المشتركة؟
(أنا آسف إذا كان سؤالي "غبيًا"، فلدي خبرة صغيرة في إنشاء التطبيقات في Linux حتى الآن)
المحلول
إضافة تعليق كرد:
يرجى التحقق مما إذا كنت قد قمت بالتثبيت check
نطاق.إذا كان الأمر كذلك، يمكنك محاولة استخدام pkg-config
يقول
gcc check_money.c `pkg-config --cflags --libs check`
هنا pkg-config
سوف تقرأ الأداة المساعدة .pc
الملف (الذي يحدث أن يكون check.pc
في حالة check
إطار العمل، هكذا يقول الإدخال الأخير في الأمر check
) & أضف إشارات المترجم الضرورية (--cflags
الخيار) والمكتبات/خيارات الرابط (--libs
خيار)
أتمنى أن يساعدك هذا!