Ошибка компиляции приложения gstreamer в petalinux - PullRequest
1 голос
/ 27 января 2020

Я пытаюсь скомпилировать пользовательское приложение gstreamer в peta linux со следующими заголовочными файлами:

#include <stdlib.h>
#include <string.h>
#include <gst/gst.h>
#include <gio/gio.h>

В проекте peta linux уже есть источники библиотеки sys root, заполненные после запустите:

petalinux-build --sdk
petalinux-package --sysroot

Но при компиляции приложения (peta linux -build - c myapp) я получил следующую ошибку:

| myapp.c:25:10: fatal error: gst/gst.h: No such file or directory
|  #include <gst/gst.h>
|           ^~~~~~~~~~~
| compilation terminated.

Файл make:

APP = myapp

# Add any other object files to this list below
APP_OBJS = myapp.o

all: build

build: $(APP)

$(APP): $(APP_OBJS)
    $(CC) $(LDFLAGS) -o $@ $(APP_OBJS) $(LDLIBS)

clean:
    -rm -f $(APP) *.elf *.gdb *.o

%.o : %.c
    $(CC) -c $(CFLAGS) -o $@ $< $(shell pkg-config --cflags --libs gstreamer-1.0 glib-2.0)

И рецепт:

#
# This file is the myapp recipe.
#

SUMMARY = "Simple myapp application"
SECTION = "PETALINUX/apps"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"

SRC_URI = "file://myapp .c \
       file://Makefile \
          "

S = "${WORKDIR}"

do_compile() {
         oe_runmake
}

do_install() {
         install -d ${D}${bindir}
         install -m 0755 myapp ${D}${bindir}

У кого-нибудь есть идеи, что мне не хватает и как правильно добавить пути gstreamer для компиляции?

РЕДАКТИРОВАТЬ

Как и предполагалось, я добавил в рецепт строку DEPENDS:

#
# This file is the myapp recipe.
#

SUMMARY = "Simple myapp application"
SECTION = "PETALINUX/apps"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"

SRC_URI = "file://myapp .c \
       file://Makefile \
          "

S = "${WORKDIR}"

DEPENDS = "glib-2.0 gstreamer1.0"
RDEPENDS_${PN} = "gstreamer1.0-plugins-base gstreamer1.0-plugins-good"

do_compile() {
         oe_runmake
}

do_install() {
         install -d ${D}${bindir}
         install -m 0755 myapp ${D}${bindir}

Но, к сожалению, все еще выдает ту же ошибку ... какие-либо идеи, что может быть неправильным / отсутствующим?

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 30 января 2020

Я наконец-то начал работать, вместо этого я использовал make-файл для компиляции, использовал рецепт и, что более важно, добавил строку inherit pkgconfig, чтобы принудительно заполнить sys root во время компиляции. , это последний рабочий рецепт, надеюсь, он может помочь кому-то еще с такой же проблемой:

    #
    # This file is the myapp recipe.
    #

    SUMMARY = "Simple myapp application"
    SECTION = "PETALINUX/apps"
    LICENSE = "MIT"
    LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"

    SRC_URI = "file://myapp .c \
           file://Makefile \
              "

    S = "${WORKDIR}"

    DEPENDS = "glib-2.0 gstreamer1.0"
    RDEPENDS_${PN} = "gstreamer1.0-plugins-base gstreamer1.0-plugins-good"

    inherit pkgconfig 

    do_compile() {
             ${CC} ${WORKDIR}/myapp.c -o myapp ${CFLAGS} ${LDFLAGS} `pkg-config --cflags --libs gstreamer-1.0` 
    }

    do_install() {
             install -d ${D}${bindir}
             install -m 0755 myapp ${D}${bindir}
    }
0 голосов
/ 28 января 2020

Я думаю, что вам не хватает DEPENDS, указывающего на пакеты GStreamer, необходимые для компиляции кода. Их недостаточно для создания этого рецепта.

Вы можете взглянуть на рецепт для создания RTSP-сервера GStreamer (http://cgit.openembedded.org/openembedded-core/tree/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.16.1.bb?h=master)

DEPENDS = "gstreamer1.0 gstreamer1.0-plugins-base"

...