2012-09-18 4 views
0

J'utilise Linux 2.6.36 sur un système embarqué. J'essaie de programmer quelque chose avec des sémaphores. Pour cela, j'ai besoin d'une fonction de la bibliothèque jiffies.h. Bien pour le moment. Quand je l'inclus Libjiffies.h inconnu

soit cette façon

#include <jiffies.h> 

ou cette façon

#include <linux/jiffies.h> 

œuvres.

Mais la chose étrange est que si je vais ouvrir déclaration (eclipse comand), il ouvre une nouvelle fenêtre de l'éditeur avec la bibliothèque. Est-ce que quelqu'un a une idée de ce qu'il faut faire?

+0

Je connais le problème (je pense :), le c-Code de la fonction dans cet en-tête n'est pas encore compilé. Donc, mais là, le problème suivant apparaît: il n'y a pas de jiffies.c, cela signifie que les fonctions sont dans d'autres fichiers c. Comment puis-je savoir lequel je dois compiler? – Manfred

+0

Ecrivez-vous un module noyau, comme dans un pilote de périphérique ou quelque chose de similaire? Si c'est le cas, alors les fonctions de jiffies.h sont déjà fournies par le noyau, et je suspecte un problème dans la façon dont vous essayez de compiler votre module. – Peter

+0

@Peter J'écris (essaie de) pilote de périphérique. Votre droit est un bogue dans le processus de compilation. J'ai besoin de vérifier le chemin d'inclusion et ainsi de suite. Où puis-je trouver le chemin d'inclusion standard? – Manfred

Répondre

0

Vous ne construisez probablement pas votre module correctement. Un Makefile module du noyau est extrêmement simple, et devrait ressembler à quelque chose comme ça, dans son intégralité:

obj-m := mymodule.o 

mymodule.ko: mymodule.c mymodule.h 
    $(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules 

Le système de compilation du noyau fera le reste. Pour plus de détails, voir le chapitre sur les modules de construction à http://lwn.net/Kernel/LDD3/

Montage:

Maintenant, il semble peut-être vous n'êtes pas essayer d'écrire un module du noyau après tout. Dans ce cas, vous ne voulez pas inclure de fichiers faisant partie de la source du noyau. jiffies.h n'est pas un userland include; c'est une partie du noyau, utilisée pour écrire des parties du noyau. Pour les sémaphores d'utilisateur, essayez les sémaphores POSIX. Commencez par man sem_overview, et/ou Google "POSIX sémaphore".

+0

Merci pour la réponse. Au début, je ne veux pas créer un module noyau. Juste un programme normal. Que je pense que le problème est que j'utilise un compilateur croisé (power-pc-gcc) – Manfred

+0

Lequel est-il ??? Pour ma première question ci-dessus, vous avez dit "Oui, j'écris le pilote de périphérique". Maintenant, vous dites "Non, je n'écris pas un pilote de périphérique". – Peter

+0

Sry celui-ci. J'essaie d'abord d'écrire un algorithme en tant que programme normal et plus tard le pilote. – Manfred

0

Un mystère est résolu: Eclipse stocke tous les noms de fichiers dans un projet dans une sorte de liste et quand je clique sur show declaration il recherche dans la liste pour ce nom et affiche le fichier. Donc, il ne dit rien sur le compilateur et l'éditeur de liens si cela fonctionne. Si ce n'est pas vrai, corrigez-moi.