Linux下C++程序符号延迟绑定

Linux下C++程序符号延迟绑定

动态库使用方式分为:

  1. 隐式链接(隐式加载),编译时通过编译选项指定动态库
  2. 显式链接(显式加载),通过代码调用dlopen、dlsym、dlclose指定动态库

动态库的符号解析分为:

  1. 立即绑定
  2. 延迟绑定

使用方法:

隐式链接+立即绑定

-Wl,-z,now

隐式链接+延迟绑定

默认行为

显式链接+立即绑定

RTLD_NOW

显式链接+延迟绑定

RTLD_LAZY

例子:

#include 
//gcc -g -fcf-protection=none -o hello hello.c
//gcc -g -no-pie -fcf-protection=none -Wl,-z,now -o hello hello.c
void hello(void)
{
    printf("Hello, World!
");
}

int main(int argc, char **argv)
{
    hello();
    return 0;
}
readelf -r hello.o
readelf -r hello
objdump -d -s -j .plt -j .got.plt hello
展开阅读全文

页面更新:2024-03-04

标签:绑定   符号   函数   加载   过程   地址   链接   文件   地方   程序   动态

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top