2010-11-19 11 views
6

Próbuję skompilować json-c-0.9 testowych plików binarnych, natomiast statycznie linkami do libjson.a, który ja zbudowałem i siedzi w /path/to/json-c-0.9/lib:Czego brakuje mi w opcjach kompilatora do łączenia z biblioteką statyczną JSON-C?

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

otrzymuję liczne błędy w postaci:

/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. 

Czego mi brakuje, próbując skompilować binaria testowe? Dzięki za radę.

Odpowiedz

9

W przypadku łączenia statycznego, gcc próbuje tylko wprowadzić symbole, których potrzebuje, w oparciu o to, co już napotkało. W twoim przypadku przekazujesz -ljson przed swoimi plikami źródłowymi, więc gcc wprowadza bibliotekę statyczną i nie potrzebuje z niej niczego, następnie próbuje zbudować swój kod.

Umieść biblioteki do połączenia po kodzie.

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

Zrobiłeś mój dzień! Dzięki. – kR105

Powiązane problemy