linux/Android常用Makefile模板(静态库、动态库,可执行程序)总结
来源:互联网 发布:200左右耳机推荐 知乎 编辑:程序博客网 时间:2024/06/16 04:20
为了记忆,总结一下,以便查询。
linux Makefile模板:
1、编译动态库
- #############################################################
- # Makefile for shared library.
- # 编译动态链接库
- #############################################################
- #set your own environment option
- CC = g++
- CC_FLAG = -D_NOMNG -D_FILELINE
- #set your inc and lib
- INC =
- LIB = -lpthread -L./ -lsvrtool
- #make target lib and relevant obj
- PRG = libsvrtool.so
- OBJ = Log.o
- #all target
- all:$(PRG)
- $(PRG):$(OBJ)
- $(CC) -shared -o $@ $(OBJ) $(LIB)
- .SUFFIXES: .c .o .cpp
- .cpp.o:
- $(CC) $(CC_FLAG) $(INC) -c $*.cpp -o $*.o
- .PRONY:clean
- clean:
- @echo "Removing linked and compiled files......;
- rm -f $(OBJ) $(PRG)
2、编译静态库
- #############################################################
- # Makefile for static library.
- # 编译静态链接库
- #############################################################
- #set your own environment option
- CC = g++
- CC_FLAG = -D_NOMNG -D_FILELINE
- #static library use 'ar' command
- AR = ar
- #set your inc and lib
- INC =
- LIB = -lpthread -L./ -lsvrtool
- #make target lib and relevant obj
- PRG = libsvrtool.a
- OBJ = Log.o
- #all target
- all:$(PRG)
- $(PRG):$(OBJ)
- ${AR} rv ${PRG} $?
- .SUFFIXES: .c .o .cpp
- .cpp.o:
- $(CC) $(CC_FLAG) $(INC) -c $*.cpp -o $*.o
- .PRONY:clean
- clean:
- @echo "Removing linked and compiled files......"
- rm -f $(OBJ) $(PRG)
3、可执行程序
- ###########################################
- #Makefile for simple programs
- ###########################################
- INC=
- LIB= -lpthread
- CC=CC
- CC_FLAG=-Wall
- PRG=threadpooltest
- OBJ=CThreadManage.o CThreadPool.o CThread.o CWorkerThread.o threadpooltest.o
- $(PRG):$(OBJ)
- $(CC) $(INC) $(LIB) -o $@ $(OBJ)
- .SUFFIXES: .c .o .cpp
- .cpp.o:
- $(CC) $(CC_FLAG) $(INC) -c $*.cpp -o $*.o
- .PRONY:clean
- clean:
- @echo "Removing linked and compiled files......"
- rm -f $(OBJ) $(PRG)
随机组合、举一反三即可写出适合项目的makefile。
===================================== 我是可爱的分割线 =====================================
Android Makefile模板:
在一个Android.mk中也可以生成多个可执行程序、动态库或者静态库,需要将源程序文件和它的Android.mk文件放在同一个文件夹下面,如下:
可执行程序的Android.mk:
# Test Exe
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES:= \
main.c
LOCAL_MODULE:= test_exe
#LOCAL_C_INCLUDES :=
#LOCAL_STATIC_LIBRARIES :=
#LOCAL_SHARED_LIBRARIES :=
include $(BUILD_EXECUTABLE)
静态库(归档文件)的Android.mk:
# Test Static lib
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES:= \
helloworld.c
LOCAL_MODULE:= libtest_static
#LOCAL_C_INCLUDES :=
#LOCAL_STATIC_LIBRARIES :=
#LOCAL_SHARED_LIBRARIES :=
include $(BUILD_STATIC_LIBRARY)
动态库(共享库)的Android.mk:
# Test shared lib
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES:= \
helloworld.c
LOCAL_MODULE:= libtest_shared
TARGET_PRELINK_MODULE := false
#LOCAL_C_INCLUDES :=
#LOCAL_STATIC_LIBRARIES :=
#LOCAL_SHARED_LIBRARIES :=
include $(BUILD_SHARED_LIBRARY)
编译通过后生成的目标文件夹分别位于以下的文件夹路径下:
可执行文件:out/target/product/generic/obj/EXECUTABLE
静态库:out/target/product/generic/obj/STATIC_LIBRARY
共享库:out/target/product/generic/obj/SHARED_LIBRARY
目标的模板:可执行程序,动态库,静态库
include $(BUILD_EXECUTABLE)
include $(BUILD_SHARED_LIBRARY)
include $(BUILD_STATIC_LIBRARY)
如果编译主机的:可执行程序,动态库,静态库
include $(BUILD_HOST_EXECUTABLE)
include $(BUILD_HOST_SHARED_LIBRARY)
include $(BUILD_HOST_STATIC_LIBRARY)
========================================== over all ================================================
- linux/Android常用Makefile模板(静态库、动态库,可执行程序)总结
- 用于编译可执行程序,静态库,动态库的通用的Makefile
- Linux 动态和静态库(.so & .a)的Makefile模板
- Makefile常用万能模板(包括静态链接库、动态链接库、可执行文件)
- Makefile常用万能模板(包括静态链接库、动态链接库、可执行文件)
- Makefile常用万能模板(包括静态链接库、动态链接库、可执行文件)
- Makefile常用万能模板(包括静态链接库、动态链接库、可执行文件)
- Makefile常用万能模板(包括静态链接库、动态链接库、可执行文件)
- Makefile常用万能模板(包括静态链接库、动态链接库、可执行文件)
- Makefile常用万能模板(包括静态链接库、动态链接库、可执行文件)
- Makefile常用万能模板(包括静态链接库、动态链接库、可执行文件)
- Makefile常用万能模板(包括静态链接库、动态链接库、可执行文件)
- Android增加本地可执行程序或者库的Makefile模板参考
- makefile模板(可执行文件,动态库,静态库)
- Linux 静态库动态库 Makefile 制作
- 编译动态库,静态库makefile简单模板
- 编译动态库和静态库的Makefile模板
- CMake - boost - 可执行程序 - 静态库
- 餐饮店微信营销方案:一家餐厅的微信营销实战技巧分享
- php.sql_shell
- 《JS事件探秘》学习——基础知识练习及总结
- 查找启动分区的uuid
- jQuery常用技巧大放送
- linux/Android常用Makefile模板(静态库、动态库,可执行程序)总结
- GC ROOTS
- 专祝族卓作柞宗拽尊撰鬃坐驻锥宗罪自追
- no module named dict4ini 解决办法
- oracle 帐号scott被锁定 如何解锁
- 走庄宗紫转爪足住咨纂坠装做鬃桌柞尊啄
- install postgresql on ubuntu
- U盘装Win7蓝屏及找不到驱动解决
- 水樹 奈々 Blog 20140912 ほっこりします~☆☆☆译文