入门级的Makefile制作dynamic lib
代码文件结构:
.
├── 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的更多相关文章
- static lib和dynamic lib
		
lib分为 staticlib 和 dynamic lib: 静态lib将导出声明和实现都放在lib中,编译后所有代码都嵌入到宿主程序, 链接器从静态链接库LIB获取所有被引用函数,并将库同代码一起放 ...
 - linux dynamic lib
		
// test1.h ; struct AA { int a,b: }; AA b(5,6); int ball(); // test1.cpp # include"test1.h" ...
 - Makefile学习笔记
		
ls -l 查看文件详细信息 1.gcc -E test.c -o test.i//预编译gedit test.i //查看:高级C 2.gcc -Wall -S test.i -o test.s// ...
 - 一个适用于层级目录结构的makefile模版
		
今天写了个层次化的Makefile模版,用来自动化编译项目,这个模版应当包含以下功能: 适用于层次化结构,Makefile主要内容都放在顶层目录下的Makefile.env中,子层Makefile包含 ...
 - tiny210——uboot移植Makefile文章分析
		
这东西已经写,我们没有时间发布,如今,终于有时间稍微长送记录汇总uboot学习过程.具体了.以后忘了也能够再温习回来嘛有些特殊字符显示得乱掉了 Makefile追踪技巧: 技巧1:能够先从编译目标開始 ...
 - linux下 几个常用makefile模板,亲测可用
		
一 生成动态链接库的模板: ####################### # Makefile ####################### # compile and lib parameter ...
 - 实测iOS Dynamic Framework 对 App 启动时间的影响效果
		
最近看到的Slow App Startup Times里提到: The dynamic loader finds and reads the dependent dynamic libraries ( ...
 - makefile的一个错误:*** missing separator
		
原文转自:http://blog.sina.com.cn/s/blog_87c063060101c9yp.html 1.在写 多目录下makefile的时候,碰到一个错误提示,让我纠结许久,后面还是解 ...
 - 【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 ...
 
随机推荐
- Solution -「ARC 110D」Binomial Coefficient is Fun
			
\(\mathcal{Description}\) Link. 给定非负整数序列 \(\{a_n\}\),设 \(\{b_n\}\) 是一个非负整数序列且 \(\sum_{i=1}^nb_i\ ...
 - Solution -「洛谷 P4194」矩阵
			
\(\mathcal{Description}\) Link. 给定一个 \(n\times m\) 的矩阵 \(A\),构造一个 \(n\times m\) 的矩阵 \(B\),s.t. \ ...
 - Spring系列18:Resource接口及内置实现
			
本文内容 Resource接口的定义 Resource接口的内置实现 ResourceLoader接口 ResourceLoaderAware 接口 Resource接口的定义 Java 的标准 ja ...
 - Dubbo源码剖析二之注册中心
			
Dubbo基础二之架构及处理流程概述 - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)中架构中,无论是服务提供者还是服务消费者都离不开注册中心,可见注册中心之重要.Redis.Nacos. ...
 - .NET6: 开发基于WPF的摩登三维工业软件 (7)
			
做为一个摩登的工业软件,提供可编程的脚本能力是必不可少的能力.脚本既可以方便用户进行二次开发,也对方便对程序进行自动化测试.本文将结合AnyCAD对Python脚本支持的能力和WPF快速开发带脚本编辑 ...
 - Linux 时间操作及其同步
			
完整格式支持链接:https://blog.imakiseki.cf/2022/02/27/techdev/linux-time-operations-and-sync/ 本文将以 Arch Linu ...
 - windev的弹窗详情页滚动条实现方法以及弹窗尺寸规划
			
按照企业信息系统的设计习惯,我们一般将信息以列表的方式在主窗口展现,同时设置需要展现的字段,一些系统会将这个窗口称为总表页.列表页等.而信息的编辑或完整信息的查询,一般通过一个弹窗来实现,一些系统会将 ...
 - C#10 新功能
			
C# 10.0 向 C# 语言添加了以下功能和增强功能: 记录结构 结构类型的改进 可使用 const 内插字符串 内插字符串处理程序 global using 指令 文件范围的命名空间声明 扩展属性 ...
 - python中的list, dict, tuple以及collections模块的基本用法
			
1.关于list的一些基本用法 # 创建没有初值的列表 list1=[] # 创建有初值的列表 list2=['this','is','a','list'] # 创建给定长度但初值不确定的列表 lis ...
 - 哈工大 计算机网络 实验四 利用 Wireshark 进行协议分析
			
计算机网络实验代码与文件可见github:计算机网络实验整理 实验名称 利用 Wireshark 进行协议分析 实验目的: 本次实验的主要目的. 熟悉并掌握Wireshark的基本操作,了解网络协议实 ...