2010-11-19 11 views
6

Ich versuche, die json-c-0.9 Test-Binärdateien zu kompilieren, während statisch libjson.a Verknüpfung, die ich gebaut habe und in /path/to/json-c-0.9/lib sitzen:Was fehlt mir in Compiler-Optionen für die Verknüpfung mit JSON-C statische Bibliothek?

$ gcc -g -v -Wall -std=gnu99 -static -L/path/to/json-c-0.9/lib -ljson test1.c -o test1             

ich zahlreiche Fehler in der Form erhalten:

/path/to/json-c-0.9/test1.c:17: undefined reference to `json_object_new_string'               
/path/to/json-c-0.9/test1.c:18: undefined reference to `json_object_get_string'               
/path/to/json-c-0.9/test1.c:19: undefined reference to `json_object_to_json_string'              
/path/to/json-c-0.9/test1.c:20: undefined reference to `json_object_put'                
/path/to/json-c-0.9/test1.c:22: undefined reference to `json_object_new_string' 
etc. 

Was fehlt mir beim Versuch, die Test-Binärdateien zu kompilieren? Danke für deinen Rat.

Antwort

9

Mit statischer Verknüpfung versucht gcc nur die benötigten Symbole einzubringen, basierend auf dem, was bereits aufgetreten ist. In Ihrem Fall übergeben Sie -ljson vor Ihren Quelldateien, so GCC bringt die statische Bibliothek und benötigt nichts davon, dann versucht, Ihren Code zu bauen.

Setzen Sie die Bibliotheken, die nach Ihrem Code verlinkt werden sollen.

$ gcc -g -v -Wall -std=gnu99 -static -L/path/to/json-c-0.9/lib test1.c -o test1 -ljson 
+0

Sie haben meinen Tag gemacht! Vielen Dank. – kR105