2017-07-21 2 views
0

Je suis nouveau sur yocto et bitbake et je construis une application voip pour une carte imx6 personnalisée. Je veux utiliser les bibliothèques pjsip pour construire mon application, j'ai compilé pjsip dans ma compilation yocto et j'ai généré des bibliothèques pjsip (toutes les bibliothèques pjsip sont statiques). J'ai des problèmes pour créer une recette pour mon application qui appelle les fonctions pjsip. Voici comment ma recette ressembleerreur de référence non définie lors de la liaison de la bibliothèque statique dans la recette bitbake

Nom du fichier: rttapp.bb

DESCRIPTION = "Simple voip application" 
SECTION = "examples" 
LICENSE = "MIT" 
LIC_FILES_CHKSUM ="file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" 
PR = "r1" 

SRC_URI += "file://rttapp.c" 
SRC_URI += "file://include" 
SRC_URI += "file://lib" 

S = "${WORKDIR}" 

CFLAGS_prepend += "-I${WORKDIR}/include -DPJ_AUTOCONF=1 -DPJ_IS_BIG_ENDIAN=0 ->DPJ_IS_LITTLE_ENDIAN=1" 
LDFLAGS_append += "-L${WORKDIR}/lib -lpjsua2-arm-poky-linux-gnueabi -lstdc++ ->lpjsua-arm-poky-linux-gnueabi -lm -lrt -lpthread -lasound" 

do_compile() { 
${CC} ${CFLAGS} ${LDFLAGS} rttapp.c -o rttapp 
} 

Quand je fais bitbake rttapp, l'erreur que je vois est comme ci-dessous:

/usr/src/debug/rttapp/1.0-r1/rttapp.c:159: undefined reference to pjsua_create'. collect2: error: ld returned 1 exit status 

S'il vous plaît conseiller

+0

Etes-vous sûr que vous devez créer un lien vers libstd ++. Donc en utilisant un compilateur C? En outre, vous ne spécifiez pas les calques de version et de document que vous utilisez. – Anders

+0

D'accord merci de le signaler, supprimé libstd ++, mais l'erreur principale reste encore ... ne m'attendais pas à ce que cette modification le corrige aussi. – vhr

Répondre

0

cernées la question, il était en fait une erreur stupide

${CC} ${CFLAGS} ${LDFLAGS} rttapp.c -o rttapp 

aurait dû être

${CC} rttapp.c ${CFLAGS} ${LDFLAGS} -o rttapp 
0

Comme votre recette dépend de pjsip, vous devez avoir une dépendance explicite. Ajoutez simplement

DEPENDS += 'pjsip' 

à votre recette. Depuis la version Pyro, aucun sysroot global n'est utilisé. Au contraire, toute recette doit explicitement ajouter toutes leurs dépendances.

+0

Je vois encore la même erreur, en ajoutant DEPENDS fait pas de différence – vhr

+0

Eh bien, dans ce cas, vérifiez que la recette 'pjsip' installe réellement les bibliothèques statiques et le nom de ces bibliothèques. – Anders

+0

Probablement c'est là où il me manque quelque chose et apprécierait vraiment votre aide ma recette pjsip, construit et installe les fichiers .a dans $ {WORKDIR}/répertoire de construction et je les ai manuellement copiés dans le répertoire de fichiers dans le répertoire rttapp – vhr