我有一个库,其中有一些源代码文件(.c)和头文件,输出是共享库(.so)。
目前,我正在使用Makefile生成

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

我想在我的元层中创建一个配方来执行上面的操作并生成。所以当我做比特烘焙核心图像最小化。你能提供一个做类似操作的例子吗。

最佳答案

首先,查看dev-manual中单个源文件的简单配方,并尝试首先构建一个简单的配方。你把这个配方放在你自己的元层中是正确的。
还可以查看this section,它使用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配方以向配方中添加一个dependents,以便它拉入您的库。
DEPENDS+="your_recipe_name_here"
您可以直接将其添加到配方本身中,或者通过可以驻留在您的层中的.bbappends文件添加它。

关于c - yocto中的交叉编译库配方,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52491512/

10-12 15:02