openwrt lib库makefile

  1. 顶层Makefile
    #huaiye
    include $(TOPDIR)/rules.mk
    
    PKG_NAME:=libcommon
    
    
    include $(INCLUDE_DIR)/package.mk
    
    define Package/libcommon
    	CATEGORY:=xxx
    	TITLE:=common library
    	VERSION:=v0.1
    	DEPENDS:=
    endef
    
    
    	
    define Package/libcommon/description
    endef
    
    # The linker can identify unused sections of a binary when each symbol is stored
    # in a separate section. This mostly removes unused linker sections and reduces
    # the size by ~3% on mipsel.
    
    TARGET_CFLAGS  += -ffunction-sections -fdata-sections
    TARGET_LDFLAGS += -Wl,--gc-sections
    
    # Link-time optimization allows to move parts of the optimization from the single
    # source file to the global source view. This is done by emitting the GIMPLE
    # representation in each object file and analyzing it again during the link step.
    
    TARGET_CFLAGS  += -flto
    TARGET_LDFLAGS += -fuse-linker-plugin
    TARGET_CFLAGS += -fPIC
    
    TARGET_CFLAGS += \
    	-Wall -W -std=gnu99 -fno-strict-aliasing -MD -MP \
    	-I$(STAGING_DIR)/usr/include/libnl-tiny \
    	-I$(STAGING_DIR)/usr/include \
    	-I$(STAGING_DIR)/include \
    	-I$(TOOLCHAIN_DIR)/usr/include \
    	-I$(TOOLCHAIN_DIR)/include/fortify \
    	-I$(TOOLCHAIN_DIR)/include \
    	-D_GNU_SOURCE
    
    define Build/Compile
    	$(MAKE) -C $(PKG_BUILD_DIR) \
    		$(TARGET_CONFIGURE_OPTS) CFLAGS="$(TARGET_CFLAGS)"
    endef
    
    
    define Build/InstallDev
    	$(INSTALL_DIR) $(1)/usr/include/
    	$(CP)	$(PKG_BUILD_DIR)/*.h $(1)/usr/include/
    	$(INSTALL_DIR) $(1)/usr/lib
    	$(INSTALL_BIN) $(PKG_BUILD_DIR)/$(PKG_NAME).so $(1)/usr/lib/
    endef
    
    
    define Package/libcommon/install
    	$(INSTALL_DIR) $(1)/lib
    	$(INSTALL_BIN) $(PKG_BUILD_DIR)/$(PKG_NAME).so $(1)/lib/
    endef
    
    
    $(eval $(call BuildPackage,libcommon))
    

     

  2. 里层Makefile
    OUTPUT_NAME=libcommon.so
    OBJECTS =common_file.o common_network.o common_time.o
    
    all: $(OBJECTS)
    	$(CC) $(CFLAGS) $(LDFLAGS) $(OBJECTS) -shared -o $(OUTPUT_NAME)
    
    clean:
    	@echo Make clean in 'pwd'

     

你可能感兴趣的:(Openwrt)