【问题标题】:cross-compile library recipe in yoctoyocto 中的交叉编译库配方
【发布时间】:2019-02-28 16:25:19
【问题描述】:

我有一个包含少量源代码文件 (.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

我想在我的元层中创建一个配方来执行上述操作并在我执行 bitbake core-image-minimal 时生成 .so。您能否提供一个执行类似操作的示例配方。

【问题讨论】:

标签: c linux makefile embedded-linux yocto


【解决方案1】:

首先,查看来自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 配方以将依赖项添加到您的配方中,以便它拉入您的库。

DEPENDS+="your_recipe_name_here"

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

【讨论】:

  • BBCLASSEXTEND..有什么用。是不是原生编译的意思。我希望为我的目标板生成 libesys.so。
  • 是的,它用于原生编译。如果你只希望你的库被交叉编译,你可以省略这一行。
猜你喜欢
  • 2020-09-13
  • 2021-03-23
  • 1970-01-01
  • 2018-03-03
  • 2021-07-08
  • 1970-01-01
  • 2023-04-08
  • 1970-01-01
  • 2016-05-11
相关资源
最近更新 更多