سؤال

بدأت في الاستخدام يفحص إطار لاختبار تطبيق 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 خيار)

أتمنى أن يساعدك هذا!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top