代码文件结构:

.
├── dynamiclib_add.c
├── dynamiclib_mul.c
├── dynamiclibs.h
├── libs
└── Makefile 1 directory, 4 files

libs作为一个存放动态库的目录

Makefile:

#defualt GCC
#Please use make CC=mipsel64-linux-gcc (Like this) CC = gcc
CFLAGS = -Wall -g -O -fPIC
CXXFLAGS =
TARGET = libmytest.so
LIBPATH = ./libs/ OBJS = *.o
SRCS = *.c #SRCS = dynamiclib_add.c dynamiclib_mul.c
#OBJS = dynamiclib_add.o dynamiclib_mul.o all:$(TARGET) $(OBJS) $(OBJS):$(SRCS)
$(CC) $(CFLAGS) -c $^ $(TARGET):$(OBJS)
rm -f $(LIBPATH)*
$(CC) $(OBJS) -shared -fPIC -o $(TARGET)
mv $(TARGET) $(LIBPATH) clean:
rm -f *.o
rm -f $(LIBPATH)*

编译过程:

gcc -Wall -g -O -fPIC -c dynamiclib_mul.c dynamiclib_add.c
rm -f ./libs/*
gcc *.o -shared -fPIC -o libmytest.so
mv libmytest.so ./libs/

此处可以选择交叉编译链

编译结果:

libs/libmytest.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, 
BuildID[sha1]=c81dc02f6d6282fda3a83265bb3de3802b3926db,
not stripped

此处看到没有stripped,可以stripped,体积更小。

入门级的Makefile制作dynamic lib的更多相关文章

  1. static lib和dynamic lib

    lib分为 staticlib 和 dynamic lib: 静态lib将导出声明和实现都放在lib中,编译后所有代码都嵌入到宿主程序, 链接器从静态链接库LIB获取所有被引用函数,并将库同代码一起放 ...

  2. linux dynamic lib

    // test1.h ; struct AA { int a,b: }; AA b(5,6); int ball(); // test1.cpp # include"test1.h" ...

  3. Makefile学习笔记

    ls -l 查看文件详细信息 1.gcc -E test.c -o test.i//预编译gedit test.i //查看:高级C 2.gcc -Wall -S test.i -o test.s// ...

  4. 一个适用于层级目录结构的makefile模版

    今天写了个层次化的Makefile模版,用来自动化编译项目,这个模版应当包含以下功能: 适用于层次化结构,Makefile主要内容都放在顶层目录下的Makefile.env中,子层Makefile包含 ...

  5. tiny210——uboot移植Makefile文章分析

    这东西已经写,我们没有时间发布,如今,终于有时间稍微长送记录汇总uboot学习过程.具体了.以后忘了也能够再温习回来嘛有些特殊字符显示得乱掉了 Makefile追踪技巧: 技巧1:能够先从编译目标開始 ...

  6. linux下 几个常用makefile模板,亲测可用

    一 生成动态链接库的模板: ####################### # Makefile ####################### # compile and lib parameter ...

  7. 实测iOS Dynamic Framework 对 App 启动时间的影响效果

    最近看到的Slow App Startup Times里提到: The dynamic loader finds and reads the dependent dynamic libraries ( ...

  8. makefile的一个错误:*** missing separator

    原文转自:http://blog.sina.com.cn/s/blog_87c063060101c9yp.html 1.在写 多目录下makefile的时候,碰到一个错误提示,让我纠结许久,后面还是解 ...

  9. 【ORACLE】ID 2299494.1 安装Oracle 11g 86%报错:Error in invoking target 'agent nmhs' of makefile

    参考: ID 2299494.1 In this Document   Symptoms   Changes   Cause   Solution   References APPLIES TO: O ...

随机推荐

  1. Filter(过滤器)与Listener(监听器)详解

    11.Filter(重点) Filter:过滤器,用来过滤网站的数据: 处理中文乱码 登陆验证... Filter开发步骤: 导包 编写过滤器 导包不要错 实现Filter接口,重写对应的方法即可 p ...

  2. Vue-从入门到第三次世界大战_1

    前言:当然世界大战是大家都不希望看到的这里是代表我会一直更新下去 ,那我为什么要这么写,没错我就是标题党. 先说下Vue介绍: 官网:https://cn.vuejs.org/ 为什么用:因为是TMD ...

  3. 【外企测试面试、笔试】分享下历时8轮、30k+的外企面试全过程

    外企福利 薪酬体系完善(期权.股票等),定期薪酬市场调研,紧跟一线互联网大厂 加班很少很少 年假多,15-20天 国外免费旅游.旅游金 免费培训英语(还可能出国培训) 定期技术交流 免费零食 定期团建 ...

  4. 使用工具john破解系统密码

    下载解压得到一个存在着hash值的passwd的文件,还有一个压缩包解压得到的是一个密码本,应该就是需要使用爆破的密码本了 放在kali里面,根据题目的要求,将root的hash复制下来然后输入到一个 ...

  5. HMS Core在MWC2022展示最新开放能力,助力开发者构建精品应用

    [2022年2月28日,巴塞罗那]世界移动通信大会MWC2022在巴塞罗那开幕.HMS Core设立了3个展台(Fira Gran Via,Hall 1),向全球开发者展示HMS Core 6的全新开 ...

  6. kali各工具使用介绍

    各工具kali官方简介(竖排):https://tools.kali.org/tools-listing 安装kali虚拟机可参考:https://www.cnblogs.com/lsdb/p/650 ...

  7. 自定义表链 SnakList

    两种方式实现表链:第二种性能差 using System; using System.Collections; namespace Galaxy { class Program { static vo ...

  8. dbeaver安装配置

    安装出现库依赖没有,可以添加maven仓库 修改字体:小四

  9. kibana操作记录

    GET _search { "query": { "match_all": {} } } GET _cat/nodes GET _cat/health GET ...

  10. gurbi安装

    1,下载相应版本gurobi,msi文件,双击安装.注意安装路径,一般默认,否则容易出错. 2,注册gurobi账号,在校园网下电脑终端运行许可grbgetkey 3,添加许可路径到系统path 4, ...