Linux编译打包静态库.a脚本(很low)

Posted Dontla

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux编译打包静态库.a脚本(很low)相关的知识,希望对你有一定的参考价值。

比如目录下有这几个源文件,我们要把其中带箭头的三个源文件编译打包成静态库文件

然后在当前目录创建脚本make_lib.sh,并赋可执行权限chmod 777 make_lib.sh

#!/bin/bash
# 在下面将需要编译成静态库的源文件名填进去
list="ky_ai_api ky_ai_parse_json ky_ai_socket"
set -- `echo $list`
# 手动数上面有多少个文件名,把数字填在下面
for((i=0;i<3;i++))
do
	# 打印源文件名
	echo $1
	# 编译成.o,记得加-fPIC,我一开始没加,后来链接的时候报错
	gcc -c $1.cpp -o $1.o -fPIC -I/root/.ngrest/ngrest-build/deploy/include/
	# 打包成静态库
	ar rcs -o lib$1.a $1.o
	# 将库文件拷贝道默认搜索目录(三个默认库搜索目录之一)
	cp lib$1.a /usr/local/lib -f
	# 切换下一个源文件
	shift
done

不知道为啥,上面gcc -c $1.cpp -o $1.o -fPIC -I/root/.ngrest/ngrest-build/deploy/include/,只能在我们盒子gcc (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04) 7.5.0上跑,在我的虚拟机gcc (Ubuntu 5.4.0-6ubuntu1~16.04.12) 5.4.0 20160609跑不起来,一堆报错。。。

参考文章:Makefile编译成静态库.a

以上是关于Linux编译打包静态库.a脚本(很low)的主要内容,如果未能解决你的问题,请参考以下文章

linux+vs2013编译静态库和动态库

iOS开发,如何打包静态库.a文件

Linux动态库和静态库

Xcode生成静态库和bundle

打包静态库.a文件的方法(ar,ranlib,nm命令介绍)

打包静态库