2013-07-13 1 views
2

J'essaie de porter un programme utilisant GCD (Grand Central Dispatch) d'OSX vers Ubuntu 11.10. Je l'ai installé libdispatch mais je continue à obtenir l'erreur suivante:Ubuntu libdispatch

undefined reference to dispatch_main() 

La chose étrange est que dispatch_main() est déclarée dans un fichier d'en-tête que j'inclus et je l'appelle d'autres fonctions déclarées dans ce fichier d'en-tête et le compilateur les reconnaît . C'est seulement dispatch_main() qu'il ne peut pas voir et si j'appelle dispatch_main (2) il dit qu'il y a trop d'arguments, donc je sais que le compilateur peut voir l'en-tête.

J'ai essayé de séparer les étapes de compilation et de liaison (clang -c ...) depuis qui a fonctionné pour une erreur de référence définie avant, mais il ne semble pas faire quoi que ce soit ici ...

quelqu'un a une suggestions? Je suis assez perplexe sur celui-ci ...

+0

Afficher les commandes et la compilation exacte reliant –

Répondre

3

Il semble que vous manquiez la bibliothèque de votre ligne de liaison. Lorsque vous compilez votre programme dans un exécutable, ajoutez la bibliothèque à la commande. Je suppose qu'il devrait ressembler à ceci:

clang x.c y.c z.c -ldispatch 
+0

excellents merci c'est exactement ce qui était nécessaire. – syzygy

+0

Vous êtes les bienvenus. – jxh

+0

Actuellement, tout est en train de compiler, mais dispatch_main() provoque le blocage du programme. Les autres commandes de répartition semblent fonctionner. Une idée de ce qui pourrait manquer? (Peut-être que cela devrait être sur sa propre question?) – syzygy

Questions connexes