我有一个库,其中有一些源代码文件(.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/