⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 嵌入式系统uclinux编程.txt

📁 总的来说
💻 TXT
📖 第 1 页 / 共 2 页
字号:
          @echo $(O_OBJS) " --> " $@

          @$(LD) $(EXTRA_LDFLAGS) -r -o $@ $(O_OBJS)

    else

    $(O_TARGET): .depend

    endif

    #

    #

    # 


    all: $(O_OBJS)

          echo all 


    all_targets:  $(O_OBJS) $(O_TARGET) 


    # 


    #

    # Rule to compile a set of .o files into one .a file

    #

    ifdef L_TARGET

    $(L_TARGET): $(LX_OBJS) $(L_OBJS) 

          rm -f $@

          $(AR) $(EXTRA_ARFLAGS) rcs $@ $(LX_OBJS) $(L_OBJS)

    endif 


    #

    # This make dependencies quickly

    #

    fastdep: dummy

          @echo "make fastdep"

          if [ -n "$(wildcard *.[chS])" ]; then \

          $(SCRIPTS_DIR)/mkdep *.[chS] > .depend; fi

          if [ -n "$(wildcard *.cpp)" ]; then \

          $(SCRIPTS_DIR)/mkdep *.cpp >> .depend; fi 


    #

    # A rule to make subdirectories

    #

    sub_dirs: dummy

    ifdef SUB_DIRS

          set -e; for i in $(SUB_DIRS); do $(MAKE) -C $$i; done

    endif

    #

    # A rule to do nothing

    #

    dummy: 


    config:

          cd $(ROOT_DIR); make config 


    c clean:

          rm -f *.o

          rm -f *.gdb

          rm -f .depend

          rm -f test

          rm -f core

          rm -f *.elf

          rm -f *.elf2flt  


    #

    # This is useful for testing

    #

    script:

          $(SCRIPT) 


    run: test

          @echo ... running ...

          @echo `pwd`/test

          @./test 


    #

    # This sets version suffixes on exported symbols

    # Uses SYMTAB_OBJS

    # Separate the object into "normal" objects and "exporting" objects

    # Exporting objects are: all objects that define symbol tables

    # 
 


    $(MX_OBJS): 

          $(CC) $(CFLAGS) -DEXPORT_SYMTAB -c $(@:.o=.c) 


    $(LX_OBJS) $(OX_OBJS): 

          $(CC) $(CFLAGS) -DMODVERSIONS -DEXPORT_SYMTAB -c $(@:.o=.c) 


    $(M_OBJS):

    ifdef MAKING_MODULES

    $(O_OBJS) $(L_OBJS): 

    endif 
 


   在config 目录下,编写两个和架构有关的文件,对于x86平台,是arch.i386,如下:

    .EXPORT_ALL_VARIABLES:

    ###################################################################

    #

    # Vendor specific settings

    # 


    CONSOLE_BAUD_RATE = 19200 


    ###################################################################

    #

    # The makefiles need to know how to do things in different contexts

    # To save some pain we put it all here

    #

    # First settings we always want for all build

    # 


    # ARCH = kernel,  TARGET_ARCH = uClibc 


    MACHINE       = i386

    ARCH          = i386

    CROSS_COMPILE = 

    CROSS         = $(CROSS_COMPILE) 


    # We've used -m5307 here because the bulk of the 5272 instruction timings

    # happen to be closer to the 5307 than the 5200 series.  Luckily, the

    # actual instructions on the two processors are essentially identical.

    # This should be fixed at some stage.

    CPUFLAGS  =

    CC        = $(CROSS_COMPILE)gcc 

    AS        = $(CROSS_COMPILE)as

    CXX       = $(CROSS_COMPILE)g++ 

    AR        = $(CROSS_COMPILE)ar

    LD        = $(CROSS_COMPILE)ld

    OBJCOPY   = $(CROSS_COMPILE)objcopy

    RANLIB    = $(CROSS_COMPILE)ranlib 


    STRIPTOOL = $(CROSS_COMPILE)strip

    STRIP     = $(STRIPTOOL) 


    UCLINUX_BUILD_SET = 0     # have we set a special config below 


    ###################################################################

    #

    # General purpose lib building rules,  uClibc.config uses these when

    # possible

    # 
 


    ###################################################################

    # Settings for building user apps

    #

          CFLAGS  = -Wall -Wstrict-prototypes -O2 -g

          #CFLAGS  =  -Wstrict-prototypes -g 

          LDFLAGS  = -m elf_i386 

    ###################################################################

    # fall through,  do other config options perhaps

    #

    ifeq ($(UCLINUX_BUILD_SET),1)

    endif

    ################################################################### 


   在config 目录下,对于嵌入式平台,是arch.m68k,如下: 


    .EXPORT_ALL_VARIABLES:

    ###################################################################

    #

    # Vendor specific settings

    #

    CONSOLE_BAUD_RATE = 19200

    ###################################################################

    #

    # The makefiles need to know how to do things in different contexts

    # To save some pain we put it all here

    #

    # First settings we always want for all build

    #

    # ARCH = kernel,  TARGET_ARCH = uClibc 


    MACHINE       = m68k

    ARCH          = m68knommu

    CROSS_COMPILE = m68k-elf-

    CROSS         = $(CROSS_COMPILE) 


    # We've used -m5307 here because the bulk of the 5272 instruction timings

    # happen to be closer to the 5307 than the 5200 series.  Luckily, the

    # actual instructions on the two processors are essentially identical.

    # This should be fixed at some stage.

    CPUFLAGS  = -m5200

    CC        = $(CROSS_COMPILE)gcc 

    AS        = $(CROSS_COMPILE)as 

    CXX       = $(CROSS_COMPILE)g++ 

    AR        = $(CROSS_COMPILE)ar

    LD        = $(CROSS_COMPILE)ld

    OBJCOPY   = $(CROSS_COMPILE)objcopy

    RANLIB    = $(CROSS_COMPILE)ranlib

    ELF2FLT   = elf2flt

    STRIPTOOL = $(CROSS_COMPILE)strip

    STRIP     = $(STRIPTOOL) 


    UCLINUX_BUILD_SET = 0     # have we set a special config below 
 


    ###################################################################

    #

    # Settings for building user apps

    #

    #CFLAGS  = -m5200 -msep-data -g

    CFLAGS  = -m5200 -msep-data

    LDFLAGS = -Wl,-elf2flt

    SYSLIBS = -lc -lstdc++ -lgcc

    ###################################################################

    #

    # fall through,  do other config options perhaps

    # 


    ifeq ($(UCLINUX_BUILD_SET),1)

    endif

    ################################################################### 


   在config 目录下的config.in文件如下: 


    mainmenu_name 'uClinux Configuration'

    mainmenu_option next_comment

    comment 'Target Platform Selection'

    comment 'Choose a Vendor/Product combination.'

    choice 'Vendor/Product [Intel/i386 | Motorola/M5307C3] ' "1 CONFIG_DEFAULTS_INTEL_I386 \

    2 CONFIG_DEFAULTS_MOTOROLA_M5307C3 \

    " Intel/i386

    endmenu

4 结语
   本文讨论了uClinux平台上程序设计必须关注的一些特点,并对在uClinux进行高效程序开发做了一些讨论。

   由于uClinux是开源的,在uClinux上的开发努力永远不会停止。世界范围的技术专家在使用uClinux来构造商业化的产品,他们的工作的重要部分反过来对开源的社区作出了贡献。每当我们访问uClinux的网站,看到又出现了更新的源码发布或者更好的工具时,就会感觉到这个开发团体的热情和能力,并鞭策自己努力工作,争取为这个自由软件的发展作出自己的创造性贡献。 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -