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;
}
メイクファイル:
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: No such file or directory
It has execution rights. 何が問題なのですか?(rootfs.ext2 を ubuntu ディレクトリにマウントしてから実行しようとしましたが、buildroot のターゲット アーキテクチャは i386 なので、問題ないはずですよね?)
HelloWorld プログラムをビルドしてインストールし、最終的に実行した後、起動後に起動するように init.d に追加し、HelloWorld を X サーバーを必要としない Qt Window に置き換えたいと思います。 .
インスピレーションの主な源はここにあります。