免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1909 | 回复: 0
打印 上一主题 下一主题

扩充buildroot [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-07-29 14:18 |只看该作者 |倒序浏览
用更多软件扩充buildroot
一。Package目录首先在package目录下,添加软件目录。如foo.
二。Config.in 文件然后,创建一个名为Config.in 的文件。它基本上包括:
config BR2_PACKAGE_FOO
        bool "foo"
        help
        This is a comment that explains what foo is.
         http://foosoftware.org/foo/
最后,你必须添加新foo/Config.in到package/Config.in 。
if !BR2_PACKAGE_BUSYBOX_HIDE_OTHERS
source "package/procps/Config.in"
endif
真正的Makefile文件最后,这是最难的部分。 创建一个名为foo.mk 。 这将包含 Makefile规则,负责下载,配置,编译和安装软件。
首先,让我们看看如何写Makefile中的autotools的封装,带有一个例子:
     1  #############################################################
     2  #
     3  # foo
     4  #
     5  #############################################################
     6  FOO_VERSION:=1.0
     7  FOO_SOURCE:=foo-$(FOO_VERSION).tar.gz
     8  FOO_SITE:=http://www.foosoftware.org/downloads
     9  FOO_INSTALL_STAGING = YES
     10  FOO_INSTALL_TARGET = YES
     11  FOO_CONF_OPT =  --enable-shared
     12  FOO_DEPENDENCIES = libglib2 host-pkgconfig
     13  $(eval $(call AUTOTARGETS,package,foo))
6号线
,我们宣布软件包的版本。
7号线

8号线
,我们宣布源程序和网络上的下载位置。
9号线
,我们会告诉Buildroot安装申请分期目录。 分期目录,位于build_ARCH/staging_dir/是目录下所有的包被安装,包括他们的文件,等等默认情况下,软件包安装在这个位置使用make install命令。
[/url]
[url=http://203.208.39.132/translate_c?hl=zh-CN&ie=UTF-8&sl=en&tl=zh-CN&u=http://buildroot.uclibc.org/buildroot.html&prev=_t&rurl=translate.google.cn&usg=ALkJrhgmKf4PmVKz_elFnL0Dw7vsdTjgQg#ex1line10]第10行

,我们会告诉Buildroot也将应用程式安装到目标目录。该目录包含了什么将成为根文件系统上运行的目标。 通常,我们尽量不要安装文件,并安装剥夺版本的二进制。 .默认情况下,软件包安装在这个位置使用make install-strip命令。
线11
,我们会告诉Buildroot通过自定义的配置选项,这将被传递到在./configure 脚本之前,配置和建立。
线12
,我们宣布,我们的依赖性,
13号线
,我们调用package/Makefile.autotools.in把事情做完。
第二个解决办法,适合于每一种类型的包装,看起来像这样:
     1  #############################################################
     2  #
     3  # foo
     4  #
     5  #############################################################
     6  FOO_VERSION:=1.0
     7  FOO_SOURCE:=foo-$(FOO_VERSION).tar.gz
     8  FOO_SITE:=http://www.foosoftware.org/downloads
     9  FOO_DIR:=$(BUILD_DIR)/foo-$(FOO_VERSION)
    10  FOO_BINARY:=foo
    11  FOO_TARGET_BINARY:=usr/bin/foo
    12
    13  $(DL_DIR)/$(FOO_SOURCE):
    14          $(call DOWNLOAD,$(FOO_SITE),$(FOO_SOURCE))
    15
    16  $(FOO_DIR)/.source: $(DL_DIR)/$(FOO_SOURCE)
    17          $(ZCAT) $(DL_DIR)/$(FOO_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
    18          touch $@
    19
    20  $(FOO_DIR)/.configured: $(FOO_DIR)/.source
    21          (cd $(FOO_DIR); rm -rf config.cache; \
    22                  $(TARGET_CONFIGURE_OPTS) \
    23                  $(TARGET_CONFIGURE_ARGS) \
    24                  ./configure \
    25                  --target=$(GNU_TARGET_NAME) \
    26                  --host=$(GNU_TARGET_NAME) \
    27                  --build=$(GNU_HOST_NAME) \
    28                  --prefix=/usr \
    29                  --sysconfdir=/etc \
    30          )
    31          touch $@
    32
    33  $(FOO_DIR)/$(FOO_BINARY): $(FOO_DIR)/.configured
    34          $(MAKE) CC=$(TARGET_CC) -C $(FOO_DIR)
    35
    36  $(TARGET_DIR)/$(FOO_TARGET_BINARY): $(FOO_DIR)/$(FOO_BINARY)
    37          $(MAKE) DESTDIR=$(TARGET_DIR) -C $(FOO_DIR) install-strip
    38          rm -Rf $(TARGET_DIR)/usr/man
    39
    40  foo: uclibc ncurses $(TARGET_DIR)/$(FOO_TARGET_BINARY)
    41
    42  foo-source: $(DL_DIR)/$(FOO_SOURCE)
    43
    44  foo-clean:
    45          $(MAKE) prefix=$(TARGET_DIR)/usr -C $(FOO_DIR) uninstall
    46          -$(MAKE) -C $(FOO_DIR) clean
    47
    48  foo-dirclean:
    49          rm -rf $(FOO_DIR)
    50
    51 #############################################################
    52 #
    53 # Toplevel Makefile options
    54 #
    55 #############################################################
    56 ifeq ($(BR2_PACKAGE_FOO),y)
    57 TARGETS+=foo
    58 endif
首先,这个Makefile中示例适用于一个单一的二进制软件。对于其他软件,如多个库或更复杂的东西与多个二进制文件,它应加以调整。看看其他*.mk中的文件package目录。6~11行:定义一些有用的变量。
FOO_VERSION : foo 的版本号。
FOO_SOURCE : 源程序压缩包名称。
FOO_SITE : foo的档案下载地址。
FOO_DIR :软件将到该目录配置和编译。
FOO_BINARY :软件二进制名称。
FOO_TARGET_BINARY :二进制在目标文件系统内的完整路径。
13~14行,定义了一个目标,从远程站点下载的压缩档的放置目录( DL_DIR )。
16~18行,解压缩下载的压缩档。
20~31行,定义了目标和相关规则,配置该软件。为了对其进行配置,它基本上运行众所周知的在./configure的configure脚本。
33~34行,定义了目标和规则,编译软件。
36~38行,定义了目标和相关规则,安装该软件内的目标文件。安装之后,在/usr/man目录内的目标文件被删除,以节省空间。
40行,确定的主要目标的软件,一个最终将被顶层Makefile下载,编译,然后安装这个套件。 这一目标首先应取决于所有必要的dependecies的软件(在我们的例子中, uclibcncurses ) ,同时也取决于最后二进制。 这最后的依赖将呼吁所有先前相依以正确的顺序。
42行,定义了一个简单的目标,只有下载源代码。 这是不正常操作过程中使用的Buildroot ,但需要如果您打算下载所有必需的资源,为后来离线建设。请注意,如果您购买一个新的软件包提供了一个foo-source目标是强制性的,以支持用户如果愿意脱机-建立。 此外,它简化了检查,如果所有的包来源下载。
44~46行,定义一个简单的目标,以清除该软件在建立时调用的Makefiles中的适当的选项。在-clean的目标应该运行make clean
    on $(BUILD_DIR)/package-version,必须卸载$(STAGING_DIR)和$(TARGET_DIR)中的所有文件。
48~49行,定义一个简单的目标,完全删除目录中的软件,压缩,配置和编译的所有。MUST completely rm $(BUILD_DIR)/
    package-version.
51~58行,增加目标foo名单上的目标是由Buildroot的第一次检查,
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/20932/showart_2012096.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP