比如目录下有这几个源文件,我们要把其中带箭头的三个源文件编译打包成静态库文件
然后在当前目录创建脚本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