#!/usr/bin/python3
import os, sys
def runcommand():
if len(sys.argv) !=3:
print("usage:./cpApplib.py filename path\n")
return
substr = '{ print $3}'
cmdstr = "ldd {} | awk '{}'".format(sys.argv[1],substr)
libFilenames = []
for line in os.popen(cmdstr,"r"):
line=line.replace("\n","").replace("\r","")
if '.so' in line:
filelen=line.find(".so")
libfilename=line[:filelen]
libFilenames.append(libfilename)
if len(libFilenames) !=0:
for onefilename in libFilenames:
cpcmdstring = "cp -arf {}* {}".format(onefilename,sys.argv[2])
rmStaticLibCmd= "rm -rf {}/*.a".format(onefilename,sys.argv[2]);
os.system(cpcmdstring)
os.system(rmStaticLibCmd)
cpAppCmsString = "cp -arf {} {}".format(sys.argv[1],sys.argv[2])
os.system(cpAppCmsString)
if __name__ == '__main__':
runcommand()
使用方法:
#./cpApplib.py 文件名字 打包路径
下面将打包后的文件夹里面的库文件 拷贝至目标机, 若目标里面以后该库则不拷贝
#!/usr/bin/python3
import os, sys
def getBaseName(filename):
strlist = filename.split("/")
if len(strlist) ==0:
return filename
else:
return strlist[len(strlist)-1]
def getLdcofigResult():
cmdstr = "ldconfig --print"
libFilenames = []
for line in os.popen(cmdstr,"r"):
line=line.replace("\n","").replace("\r","")
if '/' in line:
filelen=line.find("/")
#libfilename 绝对路径名
libfilename=line[filelen:]
#libfilename xiangdui路径名
libfilename = getBaseName(libfilename)
if '.so' in libfilename:
filelenso=libfilename.find(".so")
libfilenameNoSo=libfilename[:filelenso]
libFilenames.append(libfilenameNoSo)
#无.so的后缀名
#print(libfilenameNoSo)
return libFilenames
def walkFile(path):
libFilenames = []
for root, dirs, files in os.walk(path):
# 遍历文件
for libfilename in files:
if '.so' in libfilename:
filelenso=libfilename.find(".so")
libfilenameNoSo=libfilename[:filelenso]
libFilenames.append(libfilenameNoSo)
return libFilenames
def runcommand():
if len(sys.argv) !=3:
print("usage:./mycpLib2Target.py srcPath dstPath\n")
return
libFilenamesLdconfig = getLdcofigResult()
libFilenamesInPath = walkFile(sys.argv[1])
#remove same item
libFilenamesLdconfig = list(set(libFilenamesLdconfig))
libFilenamesInPath = list(set(libFilenamesInPath))
for file in libFilenamesInPath:
if file not in libFilenamesLdconfig:
cmdstring = "mv -f {}/{}* {}".format(sys.argv[1],file,sys.argv[2])
print(cmdstring)
os.system(cmdstring);
if __name__ == '__main__':
runcommand()
使用方法
:./mycpLib2Target.py srcPath dstPath