рецепт библиотеки кросс-компиляции в yocto - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть библиотека с несколькими файлами исходного кода (.c) и заголовочными файлами, а вывод - общая библиотека (.so).

В настоящее время я использую Makefile для генерации .so

C    = gcc
FLAGS        = # -std=gnu99 -Iinclude
CFLAGS       = -fPIC -g #-pedantic -Wall -Wextra -ggdb3
LDFLAGS      = -shared

DEBUGFLAGS   = -O0 -D _DEBUG
RELEASEFLAGS = -O2 -D NDEBUG -combine -fwhole-program

TARGET  = libesys.so
SOURCES = $(wildcard *.c)
HEADERS = $(wildcard *.h)
OBJECTS = $(SOURCES:.c=.o)


all: $(TARGET)

$(TARGET): $(OBJECTS)
            $(CC) $(FLAGS) $(CFLAGS) $(LDFLAGS) $(DEBUGFLAGS) -o $(TARGET) $(OBJECTS)
clean:
    rm *.o libesys.so

Я хочу создать рецепт в моем мета-слое для выполнения вышеуказанной операции и генерировать .so, когда я делаю bitbake core-image-minimal.Можете ли вы привести пример рецепта, который выполняет аналогичные операции.

1 Ответ

0 голосов
/ 27 сентября 2018

Сначала взгляните на простой рецепт для одного исходного файла из dev-manual и попробуйте сначала получить простое построение рецепта.Вы правильно разместили этот рецепт в своем собственном мета-слое.

Также взгляните на этот раздел , который охватывает рецепты с Makefile.

Вот кое-что, с чего можно начать

DESCRIPTION = "My test recipe"
LICENSE = "CLOSED"
PR = "r1"
S = "${WORKDIR}
FILES_${PN} = "libesys.so"


# Better to use a git repo for large projects
SRC_URI="file://xxxxxx \
         file://yyyyyy \
         "
do_install(){
      oe_runmake install DESTDIR=${D} INCLUDEDIR=${includedir}
      install -d ${D}${libdir}
      install -m 0644 libesys.so ${D}${libdir}
}

BBCLASSEXTEND = "native"

Вы будететакже необходимо изменить рецепт core-image-minimal, чтобы добавить его в зависимости от вашего рецепта, чтобы он загружал вашу библиотеку.

DEPENDS+="your_recipe_name_here"

Вы можете добавить это непосредственно в сам рецепт, илидобавьте его через файл .bbappends, который может находиться в вашем слое.

...