Colderleo's blog Colderleo's blog
首页
Linux
C++
Python
前端
工具软件
mysql
索引
关于
GitHub (opens new window)

Colder Leo

热爱代码的打工人
首页
Linux
C++
Python
前端
工具软件
mysql
索引
关于
GitHub (opens new window)
  • 常见程序性能开销cost、latency延迟耗时的经验值
  • 面试常见问题
  • 静态链接-动态链接-elf详解-elfloader
  • 动态库和静态库的依赖问题
  • glibc和ld的编译调试-为某程序单独设置ld
  • dl_iterate_phdr遍历linkmap头、获取so加载地址
  • shell、bash语法和脚本模板
  • so文件查找路径
    • 逻辑地址-线性地址or虚拟地址-物理地址
    • 通过ELF读取当前进程的符号表并获取符号的版本信息
    • 虚拟内存,cache,TLB,页表
    • 用户内存空间分布和mmap
    • numa网卡绑定
    • 隔核绑核、服务器优化
    • popen底层原理和仿照实现-execl
    • tmux用法
    • ASLR机制
    • 程序后台运行、恢复前台nohup
    • 大页内存huge_page
    • 用perf查看page-fault
    • Bash设置显示全部路径
    • 查看socket fd状态,设置nonblock
    • cout输出到屏幕的过程
    • 多进程写同一文件-write原子性-log日志
    • vim用法
    • epoll用法
    • signal信号、软中断、硬中断、alarm
    • 内核模块
    • 读写锁之pthread_rwlock和内核rwlock自旋读写锁
    • systemtap
    • xargs、awk用法
    • openssl libssl.so.10.so缺失问题
    • netstat用法
    • fork函数
    • tcp延迟确认ack
    • 90.centos7上一次std-string编译错误定位
    • docker用法
    • find用法
    • dmesg
    • gcc编译用法
    • avx-sse切换惩罚
    • Centos7防火墙
    • chmod用法
    • kernel-devel安装版本
    • Linux-Centos7系统安装、网络设置、常见报错
    • linux下g++编译c++文件
    • MegaCli 安装及使用
    • mysql
    • mysql忘记密码修改方法
    • set用法
    • crontab
    • ssh传文件scp
    • ssh连接
    • tcpdump、tshark、tcpreplay用法
    • ubantu root登录以及创建新用户
    • ubuntu安装g++和gdb
    • uClibc编译失败解决方法
    • win10安装WSL open-ssh
    • yum升级git
    • 比较so文件版本-md5sum
    • 查看磁盘信息
    • 合并两个硬盘,挂载到一个文件夹下
    • 软件安装目录usr-local-src
    • 下载centos历史版本
    • sh脚本转可执行文件、加密
    • Linux
    gaoliu
    2021-10-06
    目录

    so文件查找路径

    # 查看可执行文件的依赖库及其是否找到

    • ldd execute_file

    # so文件查找顺序

    程序运行时,会按照以下顺序查找so文件。 https://blog.csdn.net/zhangzq86/article/details/80718559 (opens new window)

    1. RPATH ,编译链接时加入 -rpath 参数指明所谓的 RUNPATH ,这样可执行文件(或者依赖其他动态链接库的动态链接库)就能告诉 ld.so 到哪里去搜索对应的动态链接库了。
    -Wl,-rpath=.
    -Wl,-rpath=.:..
    
    1
    2
    1. LD_LIBRARY_PATH ,对于没有设定 RPATH 的可执行文件或者动态链接库,我们可以用 LD_LIBRARY_PATH 这个环境变量通知 ld.so 往哪里查找链接库。

    2. /etc/ld.so.conf ,系统对 ld.so 的路径配置文件。

    3. /usr/lib 、 /lib 和 /usr/local/lib ,系统默认路径。

    # 编译时cmake加入rpath信息

    https://blog.csdn.net/zhangzq86/article/details/80718559 (opens new window)

    set(CMAKE_BUILD_WITH_INSTALL_RPATH)
    set(CMAKE_INSTALL_RPATH "./lib")
    
    1
    2

    # 将.so文件路径的目录添加到/etc/ld.so.conf

    参考https://www.cnblogs.com/xudong-bupt/p/3698294.html (opens new window)

    - sudo vim /etc/ld.so.conf

    • 文件末尾新添加一行,/home/liu/Desktop/jsoncpp-src-0.5.0/libs/linux-gcc-4.6

    • 使得修改生效:

      • sudo /sbin/ldconfig

    # 临时添加查找路径$LD_LIBRARY_PATH

    # 将/home/test添加到查找路径里:
    $ export LD_LIBRARY_PATH=/home/test:$LD_LIBRARY_PATH
    
    # 查看:
    $ echo $LD_LIBRARY_PATH
    
    1
    2
    3
    4
    5
    编辑 (opens new window)
    上次更新: 2023/05/07, 17:27:54
    shell、bash语法和脚本模板
    逻辑地址-线性地址or虚拟地址-物理地址

    ← shell、bash语法和脚本模板 逻辑地址-线性地址or虚拟地址-物理地址→

    最近更新
    01
    通过模板实现结构体成员拷贝-按成员名匹配
    05-07
    02
    c++17通过模板获取类成员的个数
    05-01
    03
    avx-sse切换惩罚
    04-30
    更多文章>
    Theme by Vdoing | Copyright © 2019-2023 Colder Leo | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式
    ×