Linkovanie

  • ked pri linkovani akejkolvek kniznice vyhadzuje mnozstvo nedefinovanych symbolov moze ist o nastaveny priznak ”-Wl,–no-undefined”.

Tento zabezpecuje ze vsetky kniznice pouzivane linkovanou musia byt definovane sposobom -lkniznica. Inak to linker povazuje za chybu. Tento prepinac zvykne byt zapnuty v subore: ”/usr/share/qt4/mkspecs/common/g++.conf”. Tam to potom vypada takto:

QMAKE_LFLAGS		+= -Wl,--no-undefined

Miesto toho tam dame:

#QMAKE_LFLAGS		+= -Wl,--no-undefined
QMAKE_LFLAGS		+=

Pozn: Po spravnosti pre desktop aplikacie je lepsie tam mat tento prepinac, ale vyvoj pre embedded je specificky a nie vsetky kniznice su rovnako pomenovane pre i386 a pre ARM a teda nie vsetky sa mozu vymenovat v zozname kniznic. Preto tento prepinac vynechavame. Napriek tomu sa odporuca vsetky EMTEST kniznice pouzite inou kniznicou vymenovat v zozname pouzivanych kniznic (napr. -ledatainput -ledataoutput a pod.)

  • /usr/bin/ld: ../bin/hlavny3: hidden symbol `__init_array_end' in ../bin/hlavny3 is referenced by DSO

Pri linkovani je potrebne pridat -shared prepinac

  • ked pre PC ide aplikacia skompilovat (zvycajne) ale pre ARM pise ze nemoze najst -lpng kniznicu, tak pravdepodobne je problem v tom, ze v niektorom .pro subore chybaju cesty na arm kniznice
 LIBS += -L../lib/.emlibs/i386 \
   -L../lib/.emlibs/arm

Ak mate projekt ktory obsahuje podprojekty, overte si, ci niektory podprojekt nema v zavislostiach -lpng.

Linkovanie v novsich systemoch Linux

Ak pouzivate novsie systemy (napr, od 12/04 LTS) tak tie funguju tak, ze davaju pri linkovani iba tie kniznice ktore su pozadovane tym, co je linkovane. Kedze my casto nedavame do kniznic zoznam pozadovanych dalsich kniznic, tak sa nam moze stat, ze pri linkovani aplikacie to vyhlasi, ze nemame niektore symboly. Dovodom je, ze libka ktora je pouzita dalsou libkou, ktoru pouzivame v aplikacii :-), ale nie je sama pouzita apliakciou, nie je ani zaradena medzi tie ktore sa s aplikaciou linkuju. Vtedy je moznost zadat parameter:

-Wl,--no-as-needed

Pridanie atributu je potrebne dat pred linkovanie kniznic, kde hlasi chybajuce symboly. Tym sa pouziju vsetky vymenovane symboly z kniznic.

Pozrite sem

Ine

 
coding/compiling.txt · Last modified: 2015/08/31 09:10 by 192.168.242.44
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki