Re: Cčko a přilinkování knihovny

Miroslav Šinko sinkomiro na gmail.com
Středa Listopad 10 16:14:32 CET 2021


Myslim, ze vam sa to snazi prekladat libku json-c, ale pisete, ze .a
mate, tak preklad je zbytocny.
Z riadku OBJS by som vyhodil $(DIR_USERS)/lib/lib/libjson-c.a
Do riadku LDFLAGS, pripadne LDLIBS, by som pridal
-L$(DIR_USERS)/lib/lib/-ljson-c  (cestu si skontorlujte).

miro

st 10. 11. 2021 o 15:52 <cizek.milan na seznam.cz> napísal(a):
>
> Ahoj,
>
> už dva dny se neúspěšně snažím přilinkovat si k C projektu json-c (starší
> verze). Od něj mám .a statickou knihovnu i hlavičkové soubory.
> Knihovna je vykompilovaná (cross kompilace) v jiném kroku sestavení, tj.
> mimo můj makefile.
>
> Nejsem žádný profík na vytvoření Makefile, ale podle mého to musí být nějaký
> zádrhel tam.
> Ať se snažím sebevíc, pořád mi to na něčem řve. Nejdále jsem se dostal do
> stavu...
>
> msdk-linux-gcc -I.
> -I/home/milanc/rtl819x-SDK-v3.4.14b-full-package/rtl819x/users/boa/apmib/
> -I/home/milanc/rtl819x-SDK-v3.4.14b-full-package/rtl819x/users/curl-7.79.1/i
> nclude/
> -I/home/milanc/rtl819x-SDK-v3.4.14b-full-package/rtl819x/users/lib/include/j
> son-c/
> -I/home/milanc/rtl819x-SDK-v3.4.14b-full-package/rtl819x/linux-3.10/drivers/
> net/wireless/rtl8192cd/ -fPIC -Wall -Werror -L.
> -L/home/milanc/rtl819x-SDK-v3.4.14b-full-package/rtl819x/users/boa/apmib/
> -L/home/milanc/rtl819x-SDK-v3.4.14b-full-package/rtl819x/users/boa/src/
> -L/home/milanc/rtl819x-SDK-v3.4.14b-full-package/rtl819x/users/lib/lib/
> -lapmib sthelper.c
> /home/milanc/rtl819x-SDK-v3.4.14b-full-package/rtl819x/users/boa/src/version
> .o
> /home/milanc/rtl819x-SDK-v3.4.14b-full-package/rtl819x/users/lib/lib/libjson
> -c.a -o sthelper
> /home/milanc/rtl819x-SDK-v3.4.14b-full-package/rtl819x/users/lib/lib/libjson
> -c.a(json_object.o): In function `json_object_double_to_json_string':
> json_object.c:(.text+0x1be4): undefined reference to `__isnan'
> json_object.c:(.text+0x1c38): undefined reference to `__isinf'
>
> V projektu mám #include <json.h>, jedná se o první demo příklad zde:
> https://gist.github.com/alan-mushi/19546a0e2c6bd4e059fd
>
> Už jsem zkoušel vše možné, ale mám tam dost nejasností... takto vypadá můj
> Makefile https://pastebin.com/y2h4nHxh
>
> Byl jsem přesvědčen, že třeba -I projde i podadresáře s hlavičkovými soubory
> (prostě rekurzivně), ale takto mi to nefunguje a musel jsem dát i s
> podadresářem.
> Pak jestli chápu, -l se používá jen u dynamických (.so) knihoven? Takže
> pokud linkuji statickou .a, tak ne? A jsem zmatený z toho názvu, protože
> knihovna se většinou (ale ne vždy) jmenuje s prefixem lib*.a, ale za tento
> parametr se to uvádí bez toho lib?
>
> Ideálně bych měl všechny knihovny linkované dynamicky a v .so podobě,
> protože je využívají i jiné části projektu. Ale to je až další krok, až se
> mi podaří toto.
>
> Trochu jsem se dostal dál, pokud přidám -lm, což by měla být nějaká knihovna
> libm. Znamená to, že ji json potřebuje? V požadavcích to neuvádí.
> https://github.com/json-c/json-c#linking
>
> Dokázal by mi s tím nějaký Cčkař pomoci? Klidně za úplatu.
> Rád věcem rozumím, ale na těchto věcech se dost zasekávám. :-(
> Děkuji.
>
> Milan
>
>
>
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list


Další informace o konferenci Hw-list