Buildroot Quick Start

来自Jack's Lab
(版本间的差异)
跳转到: 导航, 搜索
(编译构建)
(准备代码)
第94行: 第94行:
 
$(OBJS): %.o: %.c
 
$(OBJS): %.o: %.c
 
$(CC) $(CFLAGS) -c -o $@ $<
 
$(CC) $(CFLAGS) -c -o $@ $<
 +
</source>
 +
 +
or:
 +
 +
<source lang=bash>
 +
all: tx rx loopback cad
 +
 +
#CC=arm-linux-gnueabi-gcc
 +
 +
tx: common.c tx.c
 +
        $(CC) $(LDFLAGS) $(CFLAGS) -I./ $^ -o $@
 +
 +
rx: common.c rx.c
 +
        $(CC) $(LDFLAGS) $(CFLAGS) -I./ $^ -o $@
 +
 +
clean:
 +
        rm -f tx rx loopback cad
 
</source>
 
</source>
  

2021年2月9日 (二) 15:49的版本

目录

1 Overview

目录结构:

comcat@jackslab:~/buildroot-2020.11.2$ ls
arch  board  boot  CHANGES  Config.in  Config.in.legacy  configs  COPYING  DEVELOPERS  dl  docs  fs  linux  Makefile  Makefile.legacy  output  package  README  support  system  toolchain  utils


2 添加包

comcat@jackslab:~/buildroot-2020.11.2$ mkdir -p package/helloworld/

在该目录下新建 Config.in:

config BR2_PACKAGE_HELLOWORLD
        bool "helloworld"
        help
          hello world package

新建 helloworld.mk:

comcat@lab:~/buildroot-2020.11.2$ cat package/helloworld/helloworld.mk
HELLOWORLD_VERSION = 1.0.0
HELLOWORLD_SITE = $(TOPDIR)/../helloworld_src
HELLOWORLD_SITE_METHOD = local

define HELLOWORLD_BUILD_CMDS
        $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D)
endef

define HELLOWORLD_INSTALL_TARGET_CMDS
        $(INSTALL) -D -m 0755 $(@D)/helloworld $(TARGET_DIR)/usr/bin/helloworld
        #$(INSTALL) -D -m 0755 $(@D)/helloworld-init $(TARGET_DIR)/etc/init.d/S90helloworld	
        #$(INSTALL) -D -m 0755 $(@D)/rx $(TARGET_DIR)/usr/bin/rx
endef

$(eval $(generic-package))
  • HELLOWORLD_SITE is the location of the helloworld.c, init script, and makefile.
  • $(TOPDIR) is the top directory, in our case ~/buildroot-2020.11.2
  • $(@D) is the build directory.


编辑 ~/buildroot-2020.11.2/package/Config.in,增加如下内容:

 source "package/helloworld/Config.in"


3 准备代码

$ mkdir ~/helloworld_src

放入 helloworld.c Makefile:

helloworld.c:

#include <stdio.h>
#include <unistd.h>

int main(int argc, int *argv[])
{
	while(1)
	{
		printf("Hello world\n");
		sleep(1);
	}
	return 0;
}

Makefile:

OBJS=helloworld.o

all:	helloworld

helloworld:	$(OBJS)
	$(CC) $(LDFLAGS) -o helloworld $(OBJS)

$(OBJS): %.o:	%.c
	$(CC) $(CFLAGS) -c -o $@ $<

or:

all: tx rx loopback cad

#CC=arm-linux-gnueabi-gcc

tx: common.c tx.c
        $(CC) $(LDFLAGS) $(CFLAGS) -I./ $^ -o $@

rx: common.c rx.c
        $(CC) $(LDFLAGS) $(CFLAGS) -I./ $^ -o $@

clean:
        rm -f tx rx loopback cad


4 编译构建

comcat@jackslab:~/buildroot-2020.11.2$ make menuconfig
comcat@jackslab:~/buildroot-2020.11.2$ make
comcat@jackslab:~/buildroot-2020.11.2$ ls output/images/rootfs.tar
output/images/rootfs.tar


个人工具
名字空间

变换
操作
导航
工具箱