1.Linux查看 .so动态链接库
方法一 —— nm命令:
终端查看:nm -D 文件名.so
写入当前终端所在位置某个文件中(可以自动创建文件):nm -D 文件名.so | tee 文件名.text
nm命令的输出包含三个部分:
1) 符号值。默认显示十六进制,也可以指定;
2 )符号类型。小写表示是本地符号,大写表示全局符号(external);
3 )符号名称。
方法二 —— readelf -d :
终端查看: readelf -d 文件名.so
可以查看共享库的依赖库(NEEDED)和搜索名(SONAME)。
2.可以直接引用导入包内容的情况与globals().update():
1)使用from .. import ..,实现对内容的具体导入
2)使用globals().update()实现全局化:.如下:
文件结构
onedir:
| one.py
| __init__.py
two.py
one.py:
*********代码*************
def funv():
print("funv")
class Func:
def __init__(self):
self.x = 1
def acquire(self):
print("Func.acquire")
two.py
********代码**********
from onedir import one
attrs = one.__dict__.items()#__dict__展现module的所有属性;本行代码的意思是将one全局属性都付给attrs(??是不是所有全局属性还有待考证)
globals().update(attrs)#将attrs增加到当前的全局变量,也即是说将one的属性添加为two的全局变量,这样two就可以直接使用one中的属性
在two.py中直接运行:
two.py
********代码**********
from onedir import one
attrs = one.__dict__.items()
globals().update(attrs)
two.funv()#funv()#原本是one的函数,one的属性变为two的全局变量以后,two可以直接使用funv()了,不需要 使用one.funv()形式
********控制台输出结果**********
funv
3.lib是库,有动态库和静态库的区分
动态链接库是插件的一种方式,目的在于实现系统的扩展性
4.Linux与Win的相对路径
Win:
.文件所在的当前目录
..文件所在当前目录的上一级目录
./a 当前目录下的文件a
/a 盘符下的文件a
Linux
./当前目录
../当前目录的上一级