我正在尝试将自己的程序添加到使用Buildroot创建的小型Linux中。
目前为止我做了以下工作:
我在'buildroot/package/'目录下创建了一个名为'HelloWorld'的新目录。
在'buildroot/package/HelloWorld'目录下我有:Config.in、HelloWorld.mk和HelloWorld目录。
Config.in文件包含以下内容:
config BR2_PACKAGE_HELLOWORLD
bool "helloworld"
default y
help
Hello world component.
HelloWorld.mk 包含以下内容:
HELLOWORLD_VERSION:= 1.0.0
HELLOWORLD_SITE:= /home/userpc/Downloads/helloworld/
HELLOWORLD_SITE_METHOD:=local
HELLOWORLD_INSTALL_TARGET:=YES
define HELLOWORLD_BUILD_CMDS
$(MAKE) CC="$(TARGET_CC)" LD="$(TARGET_LD)" -C $(@D) all
endef
define HELLOWORLD_INSTALL_TARGET_CMDS
$(INSTALL) -D -m 0755 $(@D)/helloworld $(TARGET_DIR)/bin
endef
define HELLOWORLD_PERMISSIONS
/bin/helloworld f 4755 0 0 - - - - -
endef
$(eval $(generic-package))
(灵感来源) HelloWorld 目录包含:main.c 和 Makefile:
main.c:
#include <stdio.h>
int main()
{
printf("\nMain entry.\n");
return 0;
}
Makefile:
CC=gcc
CFLAGS=-I.
all: *.c
$(CC) -Os -Wall *.c -o helloworld
# $(STRIP) helloworld
clean:
rm -f a.out helloworld
rm -f *.o
编辑:我还将源代码"package/HelloWorld/Config.in"添加到'package/Config.in'中。但当我挂载我的rootfs.ext2分区时,在/usr/bin目录下找不到我的HelloWorld可执行文件...。因为我真的是新手,没有任何先前的知识,所以你能解释一下我错在哪里吗?
更新:程序已经构建并安装到了预期位置,但是当我尝试这样运行它:./helloworld
时,我会得到:"bash: ./helloworld: 没有那个文件或目录
"。它具备执行权限。它存在什么问题呢?(我是在将rootfs.ext2挂载到Ubuntu目录后尝试运行它的,buildroot的目标架构是i386,所以应该没问题,对吧?)
在构建、安装和运行HelloWorld程序之后,我想将其添加到init.d中,以便在启动后启动,并使用一个不需要X server的Qt窗口替换HelloWorld,类似于此处。
主要灵感来源在这里。