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

    文章

    104

    浏览量

    24716
  • 搜索
    +关注

    关注

    0

    文章

    67

    浏览量

    16622
  • 虚拟机
    +关注

    关注

    1

    文章

    855

    浏览量

    27378
收藏 人收藏

    评论

    相关推荐

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

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

    虚拟机连接不上数据怎么办?

    电脑用的是labview2013版数据可以连接,而虚拟机中用的是labview2016版数据不能连接,配置图如下,操作方法都一样,程序也
    发表于 04-13 09:33

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

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

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

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

    【NanoPi K1 Plus试用体验】本地编译&搭建虚拟机交叉编译环境

    步是必须的,因为代码物理Windows上面写,而编译则是虚拟机上面编译,必须设置共享路径以便让虚拟
    发表于 08-05 23:35

    MYZR虚拟机功能演示

    * ~ 05.* 的文件。Windows与虚拟机系统之间复制文件由于开发过程中需要经常在Windows和虚拟机系统之间共享文件,所以这里
    发表于 12-27 15:04

    超详细Dkhadoop虚拟机图文安装步骤

    自己喜欢即可),点击“下一步”进行处理器配置。见图4-2 图4-1 图4-2(5)设置虚拟机的内存,见下图 图5(6)网络连接类型有四种,四种网络连接类型中选择“使用桥
    发表于 01-07 15:57

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

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

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

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

    如何通过本地网络共享的思想实现linux虚拟机联网

    有时候我们自己的本机上,想装一个linux虚拟机玩一玩,如果linux不能连网,安装软件的时候,不太方便。可以通过本地网络共享的思想实现linux
    发表于 07-08 06:05

    虚拟机中的Linux连接

    让别人连接上我的虚拟机中的Linux
    发表于 04-03 11:34

    如何创建虚拟机

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

    介绍SSH软件的安装和ssh软件主机和虚拟机之间传文件

    学习!!!!文章嵌入式系统设计(一):虚拟机、Ubuntu的安装以及SSH 软件的安装使用:里面详细介绍了SSH软件的安装和ssh 软件主机和虚拟机之间传文件。文章嵌入式系统设计(二):
    发表于 12-22 08:01

    虚拟机连接USB设备的方法

    文章目录简介目标阅读基础环境说明参考资料U盘接入WindowsU盘从虚拟机切换到WindowsU盘从Windows切换到虚拟机U盘默认接入Windows最近更新简介目标U盘连接在VM虚拟机
    发表于 02-11 06:16

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

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