0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

虚拟机:GCC共享库在连接时的搜索位置和优选次序

如意 来源:CSDN 作者:CaspianSea 2020-06-22 15:42 次阅读

假设有两个相同的共享库,一个在标准的共享库搜索目录(/lib/i386-linux-gnu), 一个在非标准目录(/home/charles/tmp):

虚拟机:GCC共享库在连接时的搜索位置和优选次序

在/home/charles/tmp下有个测试程序main.c,调用共享库里的函数。

用如下的命令编译:

用ldd看一下link的共享库:

虚拟机:GCC共享库在连接时的搜索位置和优选次序

可以看出,虽然我们指定了要使用 /home/charles/tmp下的库,但实际上用的还是标准搜索路径下的库。

换句话说,GNU ld 优选搜索标准路径下的文件,然后才是 -L指定的

现在执行

export LD_LIBRARY_PATH=/home/charles/tmp

虚拟机:GCC共享库在连接时的搜索位置和优选次序

可见,LD_LIBRARY_PATH指定的路径优选于系统标准目录。

最后尝试一下如下的方法:

gcc main.c -wl,-rpath,/home/charles/tmp -g -o main -lshared

或者:

gcc main.c -Wl,-rpath /home/charles/tmp -g -o main -lshared

虚拟机:GCC共享库在连接时的搜索位置和优选次序

最后,总结一下,共享库的搜索顺序(按照优先次序):

1) LD_LIBRARY_PATH指定的目录

2) rpath指定的路径。

rpath指定的路径同时被写进了二进制文件里面。

p$ readelf -d main | grep rpath

0x0000000f (RPATH) Library rpath: [/home/charles/tmp]

3)系统标准路径

这包括/lib, /usr/lib, /usr/local/lib以及在/etc/ld.conf 里面指定的路径。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • GCC
    GCC
    +关注

    关注

    0

    文章

    105

    浏览量

    24802
  • 搜索
    +关注

    关注

    0

    文章

    69

    浏览量

    16642
  • 虚拟机
    +关注

    关注

    1

    文章

    902

    浏览量

    28007
收藏 人收藏

    评论

    相关推荐

    什么是虚拟机虚拟机真的那么好用吗?

    日新月异的科技世界中,虚拟化技术如同一座桥梁,连接着现实与数字的鸿沟,为我们打开了全新的计算维度。虚拟机,这一概念,自其诞生以来,就以其独特的魅力和强大的功能,深深地影响了软件开发、
    的头像 发表于 07-06 08:05 463次阅读
    什么是<b class='flag-5'>虚拟机</b>?<b class='flag-5'>虚拟机</b>真的那么好用吗?

    创建ubuntu虚拟机

    的存在形式,然后点击“下一步”完成。指定磁盘文件,这里默认即可。默认点击“完成”即可。至此,虚拟机创建完成。下一小节中我们介绍Ubuntu系统虚拟机中的安装,其
    发表于 08-10 14:15

    开发板如何通过虚拟机文件共享功能,运行虚拟机上linux下的程序

    开发板如何通过虚拟机文件共享功能,运行虚拟机上linux下的程序
    发表于 03-20 23:44

    VMware虚拟机与主机共享文件的方法

    首先,确保虚拟机已经安装VMware Tools。第一步,主机新建固定共享文件夹,例如D:/Share。第二步,打开虚拟机,点击“编辑虚拟机
    发表于 07-03 05:44

    VMware虚拟机与主机共享文件的方法步骤

    首先,确保虚拟机已经安装VMware Tools。第一步,主机新建固定共享文件夹,例如D:/Share。第二步,打开虚拟机,点击“编辑虚拟机
    发表于 07-09 02:37

    虚拟机和主机共享文件失败的原因与解决

    CentOS虚拟机和主机共享文件失败的解决办法
    发表于 03-25 10:01

    请问如何安装虚拟机共享文件?

    1、如何安装虚拟机共享文件?安装虚拟机共享文件除了有此作用外,还有其他什么用途呢?
    发表于 07-04 05:56

    如何创建虚拟机

    实战开发--开发环境安装(五)1、下载软件vmware和ubuntu-20.04.1-desktop-amd64.iso2、创建虚拟机完整步骤3、安装嵌入式linux所需的工具包4、安装vmware tool,实现虚拟机与物理主机交换和拖拉文件功能,从而文件
    发表于 12-16 07:45

    VM2008R2中使用模板快速创建虚拟机

    模板的共享位置。由于此前在库所在的分区目录中创建了名为”Template”的文件夹,此处的“虚拟机路径”选定这个文件夹路径。8、 “摘要”页,如果没有需要更改的选项,直接点击“创建”
    发表于 10-24 16:58

    windows 与虚拟机共享设置手册.pdf

    windows 与虚拟机共享设置手册 现在使用虚拟机的人越来越多,它的确给我们带来了很大的方便。但是其中总会有一些问题困扰着我们,今天我就给大家讲一讲我
    发表于 03-13 14:48 51次下载

    如何使用windows10远程连接虚拟机桌面

    本文介绍了如何使用 windows10 远程连接虚拟机桌面(已使用远程连接工具连接虚拟机,如 xshell),亲测可用,不懂的地方欢迎交流
    的头像 发表于 07-12 11:18 2835次阅读

    虚拟机ubuntu怎么联网

    虚拟机ubuntu怎么联网  虚拟机(Virtual Machine)是运行在物理(Host Machine)上的虚拟操作系统环境。
    的头像 发表于 12-27 16:51 900次阅读

    虚拟化数据恢复—虚拟机误还原快照的数据恢复案例

    有一台虚拟机是由物理迁移到ESXI上面的,迁移完成后为该虚拟机做了一个快照。虚拟机上运行了一个SQL Server数据,记录了5年左右的
    的头像 发表于 05-11 11:07 458次阅读

    服务器数据恢复—EMC Isilon存储中虚拟机数据恢复案例

    服务器存储数据恢复环境: EMC Isilon S200集群存储,共三个节点,每节点配置12块SATA硬盘。 服务器存储故障: 工作人员误操作删除虚拟机虚拟机中数据包括数据、MP4
    的头像 发表于 06-13 13:38 327次阅读
    服务器数据恢复—EMC Isilon存储中<b class='flag-5'>虚拟机</b>数据恢复案例

    虚拟机数据恢复—KVM虚拟机被误删除的数据恢复案例

    虚拟机数据恢复环境: Linux操作系统服务器,EXT4文件系统。服务器中有数台KVM虚拟机虚拟机1:主数据服务器 虚拟磁盘
    的头像 发表于 08-07 13:33 338次阅读
    <b class='flag-5'>虚拟机</b>数据恢复—KVM<b class='flag-5'>虚拟机</b>被误删除的数据恢复案例