Makefile总结

必需

当前路径
LOCAL_PATH:= $(call my-dir)
变量是全局,要清除其他影响,新的makefile从此开始
include $(CLEAR_VARS)
(可选)包含其他mk的宏定义(enable := yes)
include $(LOCAL_PATH)/../good.mk
LOCAL_MODULE_TAGS :=user eng tests optional
optional:指该模块在所有版本下都编译,否则只能在对应的版本下编译
LOCAL_MODULE_TAGS := optional
模块名
LOCAL_MODULE := libxxx

编译的文件

LOCAL_SRC_FILES := \
    A.CPP \
    B.CPP \

LOCAL_C_INCLUDES := \
    $(LOCAL_PATH)/ \
    $(LOCAL_PATH)/../include \
    other/
LOCAL_LDFLAGS := -lpthread //链接第三方静态库
LOCAL_STATIC_LIBRARIES := //静态库
LOCAL_SHARED_LIBRARIES := //动态库
增加宏定义
#LOCAL_CFLAGS += -DXXX   相当于在所有源文件中增加一个宏定义#define XXX
ifneq ($(filter emulator,$(BOARD_VENDOR)),)
    LOCAL_CFLAGS += -DEMULATOR #LOCAL_CPPFLAGS += -DENABLE_PARCEL
endif
EXPORT_SYMBOL标签内定义的函数或者符号对全部内核代码公开,不用修改内核代码就可以在内核模块中直接调用
LOCAL_EXPORT_SYMBOLS := true

生成动态库or静态库or可执行文件

ifeq ($(enable), yes)
    include $(BUILD_SHARED_LIBRARY)
endif
ifeq ($(enable), no)
    include $(BUILD_STATIC_LIBRARY)
endif
include $(BUILD_EXECUTABLE)
makefile的选项CFLAGS、CPPFLAGS、LDFLAGS和LIBS的区别
如果要让软件运行时库文件的路径也得到扩展,那么我们需要增加这两个库给”-Wl,R”
LDFLAGS = -L/var/xxx/lib -L/opt/mysql/lib -Wl,R/var/xxx/lib -Wl,R/opt/mysql/lib
LDFLAGS = -L/var/xxx/lib -L/opt/mysql/lib # 告诉链接器从哪里寻找库文件
LIBS = -lmysqlclient -liconv # 接器要链接哪些库文件
CFLAGS 表示用于 C 编译器的选项,CXXFLAGS 表示用于 C++ 编译器的选项。这两个变量实际上##涵盖了编译和汇编两个步骤。
CFLAGS  += `pkg-config --cflags gstreamer-1.0 glib-2.0`
LDFLAGS += `pkg-config --libs gstreamer-1.0 glib-2.0`
指定输出位置
bin_install_path := $(TARGET_OUT)/usr/bin
LOCAL_MODULE_PATH := $(bin_install_path)
> ALL_DEFAULT_INSTALLED_MODULES来获得当前所有要打包到系统镜像文件中去的模块文件的
ALL_DEFAULT_INSTALLED_MODULES += $(addprefix $(TARGET_OUT)/usr/bin/,$(notdir $(LOCAL_MODULE).so))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值