dynamic-linking相关内容

在共享库中不使用PLT的情况下调用另一个目标文件中的函数?

我有两个汇编代码,code1.s和code2.s,我想从这两个代码中构建一个可重定位的共享库(使用-fPIC开关). 我想code2.s调用一个名为myfun1的函数,该函数在code1.s中定义. 当我在code2.s中使用call myfun1@PLT时,它找到了该函数,并且像一个超级按钮一样工作,但是它使用PLT节来调用此函数,该函数位于同一共享库中.我不想遵循PLT部分来执行此 ..
发布时间:2020-05-01 03:40:53 其他开发

OS X上的弱符号别名类似于Linux上的别名,还是最接近的别名?

我做什么 在为Linux编写共享库时,我倾向于注意重定位,符号可见性,GOT/PLT等. 在适用的情况下,当来自同一库的函数相互调用时,我试图避免调用PLT存根.例如,假设一个共享库提供了两个公共函数-foo()和bar()(这两个函数都可以由用户调用).但是,bar()函数也调用foo().因此,在这种情况下,我要做的是: 定义具有私人可见性的_foo()和_bar()函数. ..
发布时间:2020-05-01 03:33:08 服务器开发

链接被阻塞了.. -rpath是什么? MacOS X

因此,我正在构建一个项目,它使用编译库(.dylib或.so)中的函数.我在适当的位置具有头文件和库文件(这是QtRoot的所有部分),但是当我尝试在Xcode中构建项目时,出现调试器错误: dyld:库未加载:@ rpath/libRIO.so 引用自:/Users/paulthompson/Documents/Programming/Build Products/Debug/MacHel ..
发布时间:2020-05-01 03:29:48 其他开发

加载时间重定位和虚拟内存

我想知道在具有虚拟内存支持的系统上加载时重定位实际上意味着什么.我想在具有虚拟内存的系统中,每个可执行文件的地址都将从零开始,并且在运行时这些地址将被转换为使用页表的物理地址,因此可执行文件可以在内存中的任何位置加载而无需任何重定位.但是,这篇关于共享库的文章提到,链接器在可执行文件中指定了要加载可执行文件的地址(入口点地址). http://eli.thegreenplace .net/2 ..
发布时间:2020-05-01 03:27:27 其他开发

如何通过库名找到库的文件名?

如何通过库名找到库的文件名? 换句话说,当我使用"-lc"时,我知道它是/lib/libc.so.6(或类似名称.)我希望能够键入一些命令,其中"-lc"是输入,输出为"/lib/libc.so.6".为了进一步扩展这个想法,我想指定自己的搜索路径,以便可以将此库解析器用于不同的工具链...任何帮助都很棒, 谢谢 钦茨 解决方案 如果要找出给定的GCC在哪里可以找到libc.a ..
发布时间:2020-04-30 10:37:20 其他开发

CMake Build Mac应用程序

我们公司目前使用CMake来为Windows构建我们的可执行文件.我正在努力使我们的应用程序在Mac上运行.到目前为止,该应用程序在Mac上均可正常运行.但是,当我尝试打开CMake为Mac创建的可执行文件时,在终端窗口中出现以下错误: Last login: Tue Apr 16 14:34:58 on ttys001 Locals-MacBook-Pro:~ auser$ /Users/ ..
发布时间:2020-04-30 08:36:52 其他开发

为什么我不能使用LD_LIBRARY_PATH覆盖动态库的搜索路径?

编辑:我解决了这个问题,解决方法如下. 我正在专用于科学计算的共享计算集群中构建代码,因此我只能控制主文件夹中的文件.尽管我以fftw为例,但我想了解具体原因,为什么我尝试设置LD_LIBRARY_PATH无效. 我在这样的主文件夹中建立fftw和fftw_mpi库 ./configure --prefix=$HOME/install/fftw --enable-mpi --en ..
发布时间:2020-04-30 08:33:48 服务器开发

如何使用GCC/LD设置RPATH和RUNPATH?

我最近在系统升级后遇到了这个问题:使用GCC -Wl,-rpath=选项的工作方式与以前不同. 我用它来设置一些在我的项目子模块中构建的共享库的搜索路径.当时我认为它比在系统范围内设置LD_LIBRARY_PATH更好(我不想在每次打开计算机时都进行设置).一切正常,这两种方法似乎是等效的. 现在,它表明-rpath的行为已更改.它仍然适用于直接依赖的库,但不适用于通过-rpath=链 ..
发布时间:2020-04-30 08:32:23 服务器开发

备用glibc动态链接器(ld.so)的库路径顺序

我需要使用备用glibc版本,该版本比系统上安装的版本(2.18 vs 2.15)更新.涵盖了几个相关问题 此处和我设置了新的动态链接器(ld-2.18.so)的库路径,以便在旧的libc(libc-2.15.so)之前找到新的libc(libc-2.18.so).但是,当我尝试使用新的ld运行程序时,会拾取旧版本的libc,并生成SEGV. 为什么会这样? 注意:我知道可以通过在编译时使用 ..
发布时间:2020-04-23 11:11:32 服务器开发

linux交叉编译和动态库/链接

我正在尝试为BeagleBoard开发. 因此,我安装了CodeSourcery Sourcery_G ++ _ Lite工具链. 我想使用opencv库.因此,我将源代码下载到我的Ubuntu开发系统中,使用gcc编译为共享库并安装了该库. 当我为x86体系结构构建helloworld应用程序时,一切都很好. 现在,我想与用于ARM体系结构的其他工具链一起编译相同的应用程序. ..

__libc_start_main @ plt如何工作?

要研究目标文件如何在linux中加载和运行,我制作了最简单的c代码,文件名为simple.c. int main(){} 接下来,我制作目标文件并将目标文件另存为文本文件. $gcc ./simple.c $objdump -xD ./a.out > simple.text 从许多互联网文章中,我可以发现gcc动态加载了诸如_start,_init,__ libc_start ..
发布时间:2020-04-23 10:52:59 服务器开发

jQueryUI选项卡-深度链接到选项卡内容

我不确定目前是否可行,并且完成的测试似乎提供了奇怪的结果. 我在一页上有4个标签的一部分,在这些标签内是几个文本部分,每个部分都有一个唯一的锚点名称. 我想做的是从另一页链接说出选项卡3中的第4个内容块... 这些选项卡都很好用,如果我链接到第一个选项卡上的内容部分,它就很好用..当我想链接到第一次出现棘手的选项卡时. 我尝试过 ..
发布时间:2019-11-20 18:27:19 JavaScript

如何使用关联图像显示随机选择的文本?

我是初学网页设计师,我需要知道如何将一件事情联系到另一件事。问题是,每次网站刷新时,我都会更改不同的引号。 我需要对位于不同div标签中的图像做同样的事情。我需要链接它们的原因是因为图像需要与引用协调。 例如:引用0与图像0。 这是javascript代码: var quotes = new Array(); 引号[0] =“text1”; 引号[1] =“Text2”; ..
发布时间:2019-06-07 17:29:49 前端开发

从PHP脚本调用Java(或python或perl)

我一直在尝试在Django中构建一个简单的原型应用程序,并且很遗憾,因为它太复杂了(我知道从长远来看它是值得的,但我确实只是没有足够的时间 - 我需要一些东西在几天内运行起来。所以,我现在正在考虑使用PHP,因为它是创建我最熟悉的动态Web内容的方法,而且我知道我可以快速完成某些工作。 我的应用程序,虽然简单,可能会做一些相当复杂的AI的东西,并且可能是我不需要PHP中的库。所以我想知道PH ..
发布时间:2019-01-07 16:25:36 Java开发

在运行时动态下载并执行iOS代码

作为学术和心理练习,如何在iOS设备上下载预编译的二进制文件并在其中执行方法? 据我所知,这违反了Apple的许可协议第3.2.2节,但我要求提供个人项目并了解有关iOS运行时的更多信息。 目标 下载 http://someexample.com/MyCoolBinary.a 将下载的二进制文件保存到设备磁盘。 调用二进制文件中存在的已知方法。 我是什么已经尝试了 ..
发布时间:2018-09-19 19:35:58 移动开发

如何将LC_LOAD_DYLIB命令插入Mach-O二进制文件或将静态库加入现有二进制文件(IOS)

这是我第一次询问stackoverflow而且我很绝望。 我的任务是加载dylib或将静态lib加入已存在的可执行文件对于IOS设备。 我将使用 static void __attribute __((构造函数))initialize(void)开始调酒。 这个可执行文件适用于内部企业appstore,所以我不需要通过苹果appstore(因为他们会拒绝它)。 这个的原因是从客 ..
发布时间:2018-09-18 15:52:14 移动开发

DYLD_PRINT_STATISTICS没有显示任何内容

我正试图在从静态库迁移到框架之后对应用启动进行分析。我们有30个左右的框架(fyi:cocoapods)所以我想检查它是否影响性能。团队中的轶事测试表明它不是,但我也想要一些数字! 我添加了环境变量 DYLD_PRINT_STATISTICS 和 DYLD_PRINT_LIBRARIES 查看链接器正在做什么,但我得到的所有输出来自 DYLD_PRINT_LIBRARIES 变量。我可以看到 ..
发布时间:2018-09-17 10:26:41 移动开发