La construction de la bibliothèque pour le test de vérification de C-cadre
-
16-12-2019 - |
Question
J'ai commencé à utiliser vérifier cadre pour les essais C application.Pour mieux comprendre, je suis allé à travers l'exemple de la vérification de l'emballage.Il fonctionne très bien, mais je n'ai pas besoin automake outils - je veux compiler mon propre Makefile (car je veux comprendre le vérifier correctement et j'ai besoin d'utiliser mon application finale, comme un paquet d'un OS).Peut-être que je pourrais l'utiliser il y a le Makefile généré automatiquement, mais pour l'instant, il serait à côté d'une nouvelle chose que j'ai à apprendre et j'ai peu de temps pour la préparation des tests unitaires.(Puis, bien sûr, je veux étudier et de comprendre les outils pour générer des Makfile, à l'aide de configurer, etc.)
Il y a un problème dans la construction de l'application avec mon Makefile, que je n'ai pas liée à l'objet pour vérifier la fonctionnalité:
/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'
J'ai découvert que dans l'exemple d'application est la gcc avec obj.fichier check_money-check_money.o
, qui a été créé par 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
Et voici mon problème:il utilise la dépendance check_money-check_money.Tpo
.Ce fichier a été générer par la commande ./configure
, je n'utilise pas.
Comment puis-je créer mon propre .o
fichier pour vérifier pour construire avec succès?Il est nécessaire de créer ce fichier pour chaque application?Peut-être pas un, quelque part dans les bibliothèques partagées?
(Je suis désolé si ma question est "stupide", j'ai des petits de l'expérience par la création d'applications sous linux encore)
La solution
L'ajout de commentaire comme réponse:
Veuillez vérifier si vous avez installé check
cadre.Si oui, vous pouvez essayer de l'utiliser pkg-config
dire
gcc check_money.c `pkg-config --cflags --libs check`
Ici pkg-config
l'utilitaire de lire les .pc
fichier (qui se trouve être check.pc
en cas de check
cadre, et donc la dernière entrée dans la commande dit check
) & ajoutez les drapeaux du compilateur (--cflags
option) & bibliothèques/options du linker (--libs
option)
Espérons que cette aide!