yocto中的交叉编译库配方

时间:2018-09-25 05:59:32

标签: c linux makefile embedded-linux yocto

我有一个几乎没有源代码文件(.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

我想在我的meta层中创建一个配方,以执行上述操作并生成.so,以便在进行bitbake core-image-minimal时。您能提供一个示例菜谱吗?

1 个答案:

答案 0 :(得分:0)

首先,查看来自dev-manual的单个源文件的简单配方,然后尝试首先获得一个简单的配方。您可以正确地将此食谱放在自己的meta层中。

也可以看看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食谱,在食谱中添加一个“ depend”,以便将其添加到lib中。

DEPENDS+="your_recipe_name_here"

您可以将其直接添加到配方本身,也可以通过可驻留在图层中的.bbappends文件添加。