>Linker中主要的两个源点是dlopen和dlsym。
* dlopen传入两个参数,返回一个文件句柄。传入的两个参数是so库的名字和flag,flag主要需要
dlopn有两个传入参数,一个是要打开的so文件的路径,另一个是flag,flag常用的有五种,分别是:
* RTLD_LAZY:该flag说明使用懒加载方式加载该so文件,即在dlopen返回之前,只解释so文件中定义的函数符号,对于外部的函数符号不进行解析。
* RTLD_NOW:该flag说明在dlopen返回之前,对so库中所使用的所有的符号进行解析。
>懒加载和即时加载的区别只针对的是外部函数符号的解析时间,而变量则都是在加载so库时就进行了解析。
* RTLD_GOLBAL:该flag表明在该so库中定义的符号,可以被其后打开的so库重定位。
* RTLD_LOCAL:该flag表明在该so库中定义的符号,不可以被其后打开的so库重定位。
>在未定义时,缺省值为RTLD_LOCAL。
* RTLD_NOLOAD:该flag可以用来判断是否已经加载了该so库。如果dlopen返回的是NULL,则说明未加载;否则说明已经加载该so库。该符号还可以用来改变加载的so库的flag,`dlopen(RTLD_NOLOAD|RTLD_GLOBAL)`
* dlsym