2012-07-18 7 views
2

J'essaye d'écrire un petit client basé sur C pour mongo db pour mon application. Permettez-moi de commencer en disant que je n'ai pas programmé en C depuis longtemps maintenant, alors peut-être que le problème auquel je fais face est très basique! Je n'arrive pas à compiler mon code :-)Pilote MongoDB C sous Mac OSX Lion

J'utilise un Apple Macbook Pro 64 bits (OSX Lion). Le gcc est:

Target: i686-apple-darwin11 
Thread model: posix 
gcc version 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00) 

Je GIT mongo c driver cloné le premier, a fait un git checkout à 0,6, puis couru faire.

make 
make install 
make test 

Les tests ont couru fin et les bibliothèques ont été installées correctement dans/usr/local/lib/ avec les fichiers .h passe correctement dans/usr/local/include.

Puis-je copier collé un morceau de code dans un fichier appelé donnees.c comme suit:

#include <stdio.h> 
#include "mongo.h" 

int main() { 
    mongo conn[1]; 
    int status = mongo_connect(conn, "127.0.0.1", 27017); 
    return 0; 
} 

Rien d'extraordinaire, juste essayer d'ouvrir une connexion. Lorsque j'essaie de compiler ceci, j'obtiens l'erreur suivante:

gcc --std=c99 -I/usr/local/include -L/usr/local/lib -o data data.c -lmongoc 

Undefined symbols for architecture x86_64: 
    "_mongo_connect", referenced from: 
     _main in ccjPPPVs.o 
ld: symbol(s) not found for architecture x86_64 
collect2: ld returned 1 exit status 

Qu'est-ce que je fais mal?

+0

Peut-être que cela aide: http://stackoverflow.com/ questions/8034568/undefined-symbols-for-architecture-x86-64-quelle-architecture-dois-je-utiliser –

+0

non. ce qui est étrange est que les tests fonctionnent mais mon code ne compile même pas avec le même gcc :( – aishwarya

+0

Est-ce que la sortie du test est enregistrée quelque part? –

Répondre

1

Il semble y avoir un problème sur le mac-link par rapport à la bibliothèque statique.

+0

avec static je reçois 'ld: bibliothèque introuvable pour -lcrt0 .o' – aishwarya