项目经验。

关键语句:

$(CC)  -L $(LIB_FOR_SRS) -o $(OUTPUT_DIR)/$(TARGET)  $(OBJS) -Wl,-Bstatic -lssl -lcrypto  \
    -Wl,-Bdynamic $(DYNAMIC_LINK_OPTION) $(STATIC_LINK_OPTION)

也可以换成(链接):

$(LD)  -L $(LIB_FOR_SRS) -o $(OUTPUT_DIR)/$(TARGET)  $(OBJS) -Wl,-Bstatic -lssl -lcrypto  \
    -Wl,-Bdynamic $(DYNAMIC_LINK_OPTION) $(STATIC_LINK_OPTION)

LIB_FOR_JSON          = ./lib/json_lib/*
LIB_FOR_MQTT          = ./lib/mqtt_lib/*
LIB_FOR_SQLITE3       = ./lib/sqlite3_lib/*
LIB_FOR_SRS           = ./lib/srslibrtmp_lib/srs_librtmp.a
SRC_DIR               = ./src
OUTPUT_DIR            = ./output
SYS_LOCAL_LIB_DIR     = /usr/local/libTARGET    = ecSmartFire
RM        = rm -rf
MV        = mv
CP        = cp -r
LDCONFIG  = ldconfig#### compile comment #####
COMPILE                    = aarch64-linux-gnu-
CC                         = $(COMPILE)gcc
STRIP                      = $(COMPILE)strip
LD                         = $(COMPILE)ldCOMPILE_OPTION             = -O2 -Wall  -Wcomment -Wformat -Wmissing-braces -Wswitch -Wuninitialized \-Wbad-function-cast -Waggregate-return -Wmultichar -Wsign-compare -Wshadow
#COMPILE_OPTION_DEBUG       = -gdwarf-2 -g
COMPILE_ALL_OPTION         += $(COMPILE_OPTION) $(COMPILE_OPTION_DEBUG)STATIC_LINK_OPTION         =  -lsqlite3  -lm  -lpthread -lc  -lstdc++  -ldl
DYNAMIC_LINK_OPTION        = -lpaho-mqtt3a -ljson-cLINK_DIFF_OPTION           = -Wl,OBJS_MAIN                  = main.o
OBJS_EC_UART_232           = ec_uart_232.o
OBJS_EC_UART_485           = ec_uart_485.o
OBJS_EC_MANAGE_PLCE        = ec_manage_plce.o
OBJS_EC_SOCKET_VIDEO       = ec_socket_video.o
OBJS_EC_MQTT_ANDROID       = ec_mqtt_android.o
OBJS_EC_SQLITE             = ec_sqlite.o
OBJS_EC_STORE_INFO         = ec_store_info.o
OBJS_EC_MANAGE_CAMERA      = ec_manage_camera.o
OBJS_DEAL_REQUEST_LOOP     = deal_request_loop.o
OBJS_PUSH_VIDEO            = push_video.oOBJS    = $(OBJS_MAIN) $(OBJS_EC_UART_232) $(OBJS_EC_UART_485) $(OBJS_EC_MANAGE_PLCE) $(OBJS_EC_SOCKET_VIDEO) \$(OBJS_EC_MQTT_ANDROID) $(OBJS_EC_SQLITE) $(OBJS_EC_STORE_INFO) $(OBJS_EC_MANAGE_CAMERA) $(OBJS_DEAL_REQUEST_LOOP) \$(OBJS_PUSH_VIDEO)$(TARGET):$(OBJS)$(CC)  -L $(LIB_FOR_SRS) -o $(OUTPUT_DIR)/$(TARGET)  $(OBJS) -Wl,-Bstatic -lssl -lcrypto  \-Wl,-Bdynamic $(DYNAMIC_LINK_OPTION) $(STATIC_LINK_OPTION) $(STRIP) $(OUTPUT_DIR)/$(TARGET)$(OBJS_MAIN):$(CC) -c $(SRC_DIR)/main.c $(COMPILE_ALL_OPTION)
$(OBJS_EC_UART_232):$(CC) -c $(SRC_DIR)/ec_uart_232.c $(COMPILE_ALL_OPTION)
$(OBJS_EC_UART_485):$(CC) -c $(SRC_DIR)/ec_uart_485.c $(COMPILE_ALL_OPTION)
$(OBJS_EC_MANAGE_PLCE):$(CC) -c $(SRC_DIR)/ec_manage_plce.c $(COMPILE_ALL_OPTION)
$(OBJS_EC_SOCKET_VIDEO):$(CC) -c $(SRC_DIR)/ec_socket_video.c $(COMPILE_ALL_OPTION)
$(OBJS_EC_MQTT_ANDROID):$(CC) -c $(SRC_DIR)/ec_mqtt_android.c $(COMPILE_ALL_OPTION)
$(OBJS_EC_SQLITE):$(CC) -c $(SRC_DIR)/ec_sqlite.c $(COMPILE_ALL_OPTION)
$(OBJS_EC_STORE_INFO):$(CC) -c $(SRC_DIR)/ec_store_info.c $(COMPILE_ALL_OPTION)
$(OBJS_EC_MANAGE_CAMERA):$(CC) -c $(SRC_DIR)/ec_manage_camera.c $(COMPILE_ALL_OPTION)
$(OBJS_DEAL_REQUEST_LOOP):$(CC) -c $(SRC_DIR)/deal_request_loop.c $(COMPILE_ALL_OPTION)
$(OBJS_PUSH_VIDEO):$(CC) -c $(SRC_DIR)/push_video.c  $(COMPILE_ALL_OPTION).PHONY:clean copylib
clean:-$(RM) $(OUTPUT_DIR)/* $(OBJS)
copylib:$(CP) $(LIB_FOR_MQTT) $(SYS_LOCAL_LIB_DIR)/$(CP) $(LIB_FOR_JSON) $(SYS_LOCAL_LIB_DIR)/$(CP) $(LIB_FOR_SQLITE3) $(SYS_LOCAL_LIB_DIR)/$(LDCONFIG)

同时使用动态库和静态库时怎么写makefile相关推荐

  1. 动态库、静态库、运行时库、引入库之间的区别

    动态库.静态库.运行时库.引入库之间的区别 杂集.捡对口味的看看吧. 转自:http://lingualspark.blog.sohu.com/94785899.html 运行时库:Unix中一个典型 ...

  2. ios 开发中 动态库 与静态库的区别

    使用静态库的好处 1,模块化,分工合作 2,避免少量改动经常导致大量的重复编译连接 3,也可以重用,注意不是共享使用 动态库使用有如下好处: 1使用动态库,可以将最终可执行文件体积缩小 2使用动态库, ...

  3. Linux 动态库和静态库

    From:http://blog.csdn.net/u010977122/article/details/52958330 From:http://blog.163.com/xychenbaihu@y ...

  4. Linux下动态库和静态库制作与调用

    Linux下动态库和静态库制作与调用 1.动态库和静态库简介   静态库是指在应用中,有一些公共代码需要反复使用,就把这些代码编译为"库"文件:在链接步骤中,连接器将从库文件取得所 ...

  5. linux代码动态分析软件,举例分析Linux动态库和静态库

    函数库分为静态库和动态库两种.创建Linux静态库和Linux动态库和使用它们在这里将以举例的形式详述一下.静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库.动态库在程序编译时并不 ...

  6. Linux动态库和静态库比较

     Linux动态库和静态库比较文件预览 文件目录树如下,如你所见,非常简单.    1. libtest/    2. |-- lt.c    3. |-- lt.h    4. `-- test.c ...

  7. Linux中的动态库和静态库(.a/.la/.so/.o)

    为什么80%的码农都做不了架构师?>>>    Linux中的动态库和静态库(.a/.la/.so/.o) Linux中的动态库和静态库(.a/.la/.so/.o) C/C++程序 ...

  8. 举例分析Linux动态库和静态库

    转自:http://www.xxlinux.com/newxxlinux/development/gui/2012-01-05/499.html 函数库分为静态库和动态库两种.创建Linux静态库和L ...

  9. 【Android NDK 开发】Android Studio 使用 CMake 导入静态库 ( CMake 简介 | 构建脚本路径配置 | 引入静态库 | 指定静态库路径 | 链接动态库 )

    文章目录 I . CMake 简介 II . Android Studio 中 CMake 引入静态库流程 III . 指定 CMake 最小版本号 IV . 导入函数库 ( 静态库 / 动态库 ) ...

  10. 【Android NDK 开发】Android.mk 配置静态库 ( Android Studio 配置静态库 | 配置动态库与静态库区别 | 动态库与静态库打包对比 )

    文章目录 I . Android Studio 中使用 Android.mk 配置静态库 总结 II . 第三方动态库来源 III . 配置 Android.mk 构建脚本路径 IV . 预编译 第三 ...

最新文章

  1. PHP气缸种类,气缸分类方法有哪些及气缸的种类
  2. 使用python进行面部合成,比PS好用多了
  3. 数据复盘《糖豆人》爆火营销过程:怎么做到以小博大?
  4. Qt-QMessageBox用法详解
  5. visual studio 的各个版本下载地址
  6. Spring EclipseLink NoSQL - 使用MongoDB和Oracle NoSQL DB构建
  7. 你关注什么,输出什么
  8. 苹果架构调整:AI、机器学习和Siri合并,由前谷歌AI负责人领导
  9. python使用缩进来体现-python使用缩进来体现代码之间的逻辑关系吗?
  10. struct深层解析
  11. 使用PrinterJob进行分页打印
  12. Linux ERROR: configuration failed for package ‘rgeos’
  13. Eclipse中安装反编译工具Fernflower(Enhanced Class Decompiler)
  14. scl 转换gcc版本
  15. 书摘:别做正常的傻瓜
  16. matlab 四面体,《有限元基础教程》【MATLAB算例】481基于4节点四面体单元的空间块体分析(Tetrahedron3D4Node)...
  17. 古墓丽影 起源 铁甲人通关技巧
  18. MacBook Air老本重装系统
  19. 程序员简历优化指南-安晓辉-专题视频课程
  20. ofo 共享单车的问题

热门文章

  1. datatables加载表格数据入门
  2. supervisor 使用文档
  3. 第六课 大数据技术之Hadoop3.x的源码解析
  4. 第十周项目2——二叉树的便利的递归算法
  5. @SpringBootApplication(exclude={DataSourceAutoConfiguration.class})的应用场景
  6. 计算机外设原理,计算机外设原理是什么
  7. Linux串口ttyUSB设置
  8. html5制作旋转正方体,html5—旋转立方体
  9. Android 智能语音相关知识-PCM设备
  10. [note] 电磁场和微波课组(一)——电磁学(电学部分)