腾讯云
开发者社区
文档
建议反馈
控制台
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
登录/注册
精选内容/技术社群/优惠产品,
尽在小程序
立即前往
文章
问答
视频
沙龙
1
回答
``dlopen()‘通过调用动态链接器’`ld linux.so‘执行动态链接吗?
、
CSAPP说 Linux系统为动态链接器提供了一个简单的接口,允许应用程序在运行时加载和链接共享库。#包括 void *dlopen(const *filename,int标志);返回:指针来处理如果确定,如果错误为NULL dlopen()是否通过调用动态链接器ld-linux.so来执行动态链接? ld-linux.so是dlopen()调用来执行动态链接的动态链接器吗? 谢谢。
浏览 0
提问于2020-09-27
得票数 0
回答已采纳
2
回答
静态库链接两次
我有以下设置: 静态库 链接到(1.)的动态库。 链接到(1.)的可执行文件。和(2.) 来自from静态库的代码现在被复制并呈现在动态库和可执行文件中。 问题: 数据(全局变量、静态类成员)是否也重复,可执行文件和dll是否看到相同的数据? Linux和Windows之间有什么区别吗? 你怎么解决这个问题? 编辑: 谢谢你的回答,我现在可以准确地解释我的情况了。 静态库没有导出/导入标志。动态图书馆有自己的符号导出。 Windows: 动态库有静态库的text+data段的副本。可执行程序不知道,动态库已经链接了静态库,因为静态库符号的非从外部可见。 Linux: 动态库
浏览 6
提问于2015-07-03
得票数 9
回答已采纳
1
回答
动态共享库--用于linux
、
我只有一个关于Linux共享库文件的问题。 我看到了许多与LinuxO.S 的动态共享库相关的链接 在上面的链接中提到了--包括库的文件: ctest.h 现在在LINUX中使用libdl构建函数-- dlopen,dlsym,dlclose。 我们真的需要为动态图书馆包括原型文件ctest.h吗? 请对以上职位提出一些建议。
浏览 7
提问于2012-12-02
得票数 2
回答已采纳
3
回答
动态加载静态库?
、
、
可以在运行时动态加载Linux中的静态libary *.a吗? 我读过 ...both静态库和共享库可以用作动态加载的库。 如何动态加载静态库?
浏览 6
提问于2010-09-02
得票数 9
回答已采纳
1
回答
是否有相当于Linux的dyld?
、
、
Mac为动态加载提供了一个有用的库,称为dyld。动态加载处理的许多有趣函数包括允许安装回调的函数,无论何时加载或卸载映像,dlopen和dlclose都将调用这些回调。这些函数分别是void _dyld_register_func_for_add_image(void (*func)(const struct mach_header* mh, intptr_t vmaddr_slide))函数和void _dyld_register_func_for_remove_image(void (*func)(const struct mach_header* mh, intptr_t vmaddr
浏览 3
提问于2013-03-29
得票数 3
5
回答
默认情况下链接的库
、
、
我的代码正在测试中: int main(){ return 0; } 从它编译的可执行文件所依赖的动态共享库是: $ gcc -o test test.c $ ldd test linux-gate.so.1 => (0x00783000) libc.so.6 => /lib/libc.so.6 (0x00935000) /lib/ld-linux.so.2 (0x00ea5000) 我想知道这三个图书馆在扮演什么角色? main函数属于哪个库? /lib/libc.so.6? return属于哪个库? /lib/libc.so.6? 这三
浏览 25
提问于2011-08-06
得票数 6
回答已采纳
1
回答
如何在Linux中从动态库(libsample.so)生成导入库(libsample.a)
在Linux上创建动态库之后,我希望从动态库(.so)生成一个导入库(.so)。我该怎么做呢?
浏览 4
提问于2010-08-05
得票数 5
1
回答
在不同的.so中总是内联函数
、
、
、
、
在Linux中,如果我将动态库中的函数声明为gcc,然后动态加载该库,则该函数会被动态链接器内联吗? 我正在编译-O3中的动态库,并且没有传递任何链接时间优化标志-flto。 真正的问题是:当一个函数从另一个库中被调用时,它是否值得像往常一样在动态库中声明它呢?
浏览 9
提问于2017-07-25
得票数 1
回答已采纳
1
回答
zOS中的动态链接
、
我必须在zOS中创建一个动态链接库。要传递给编译器的选项有哪些。 另外,如何检查zOS中的库是否动态链接依赖于其他库。我们在linux中有ldd,它显示了这种联系。我们在zOS的土地上有'ldd‘的等价物吗?
浏览 0
提问于2010-12-09
得票数 5
回答已采纳
1
回答
Linux内核如何动态地使用模块?
、
、
、
理解Linux内核说 内核在管理模块时有两个关键任务要执行。第一项任务是确保内核的其余部分能够到达模块的全局符号,例如其主函数的入口点。模块还必须知道内核和其他模块中符号的地址。因此,当一个模块被链接时,引用就会被一劳永逸地解析。第二个任务包括跟踪模块的使用情况,以便在另一个模块或内核的另一部分使用模块时不会卸载模块。一个简单的引用计数跟踪每个模块的使用情况。 任何共享库都可以动态链接(使用LD_LIBRARY_PATH)和动态加载(通过dlopen()、dlsym()和dlclose()),这是正确的吗? 模块是Linux内核的共享库吗? Linux内核如何动态地使用模块?是通过动态链接(使
浏览 0
提问于2018-10-17
得票数 0
回答已采纳
1
回答
修改gethostbyname (res_search)源代码-Linuubuntu14.04LTS
、
我试图修改我的项目在Linux中的DNS查找函数的行为,方法是将它设置为在文件中写入随机字符串作为测试。 Linux使用一些DNS解析器功能,主要是gethostbyname.。展望未来,我发现解析器函数在glibc6库中。所以,我下载了它,编译了它,生成了libresolv.so,libnss_dns.so动态库。然后,我在/usr/lib/x86_64-linux-gnu/上替换了系统上的现有系统。 注意:我发现这些库是通过修改gethostbyname代码并再次编译来解决查询的。然后,我看到了哪些动态库发生了变化。 通过创建一个直接使用res_query的程序(一个解析器函数)并使用-l
浏览 5
提问于2014-07-01
得票数 2
回答已采纳
1
回答
什么是"Windows不支持适当的动态链接?“
、
、
、
我已经阅读了Linux dlopen()和dlsym()的文档,它们分别打开动态库并在库中加载符号。 这些调用似乎相当于Windows的LoadLibrary()和GetProcAddress()。 我在这篇文章中读到"Windows不支持适当的动态链接“:。 Linux和Windows动态库调用不同的原因是什么? Linux上的动态库能够在可执行文件中加载符号,这是唯一的区别吗?但是这意味着可执行文件也是Linux上的库,因为dlopen()在动态库上运行。
浏览 2
提问于2017-02-02
得票数 0
回答已采纳
3
回答
在Windows上同时使用.so和.dll
、
、
、
我正在用C++在windows中编写一个程序,在这个程序中,用户可以编译动态链接库(windows)或共享目标文件(linux)形式的扩展。 在windows上,可以使用LoadLibrary函数加载动态链接库。在linux上加载.dlls,是否可以对windows上的.so文件执行同样的操作,反之亦然?
浏览 0
提问于2010-07-13
得票数 6
回答已采纳
2
回答
翻译系统调用是否足以实现FreeBSD的Linux兼容层?
、
我对FreeBSD的Linux兼容层的机制很好奇,并在下面得到了一些信息。 两个OSes之间的关键区别是系统调用的差异。而且,我知道Linux应用程序和BSD应用程序依赖于不同的标准动态库(例如LinuxGate.so.1)。 在实现中还有其他的东西吗?
浏览 7
提问于2015-08-31
得票数 2
回答已采纳
3
回答
在Linux上使用为Windows编译的库
、
、
我很好奇。我有一个用visual studio for Windows 64位编译的库(静态和动态版本),我想在Linux上使用它。这是一个商业库,要获得为Linux编译的相同的库,将需要很多天的电子邮件和提醒,等等。 我可以在Linux机器上使用这两个库变体中的一个(它们不是.net,而是本地库)来链接到它们吗?
浏览 3
提问于2010-12-17
得票数 0
回答已采纳
1
回答
动态库是在启动时加载的,还是只有在可执行文件需要时才加载?
、
、
、
、
以在Linux上运行的C应用程序为例,它与所需的共享库动态链接。 我知道.so文件应该在环境变量LD_LIBRARY_PATH中定义的路径中找到。 动态链接器是否在应用程序启动时加载此库?或者只能在需要从该库调用函数时才加载它吗?如果是后者,它如何才能真正知道哪个函数属于哪个库?
浏览 16
提问于2022-08-31
得票数 0
2
回答
C++中的崩溃恢复
、
、
、
我在Linux环境中有一个用C++编写的应用程序。应用程序在运行时动态加载库(共享对象)。(应用程序获得用户命令,它将执行逻辑来动态加载所需的共享库。) 在共享库中发生崩溃或分段故障时,是否有任何方法防止应用程序崩溃和退出? 我希望我的应用程序是活动的,并向用户报告崩溃。
浏览 3
提问于2013-12-31
得票数 4
回答已采纳
1
回答
那么dlfcn.c、d-linux.so和libdl.so之间有什么关系呢?
、
、
、
、
我对C和链接器不熟悉,如果我的问题听起来怪怪的,很抱歉。 我在网上查了一下,发现dlfcn.c,ld-linux.so都叫动态链接器,然后是动态链接库libdl.so,那么它们之间的关系是什么呢? dlfcn.c和其他essentiaL .C文件用于生成ld-linux.so吗?如果是,那么ld-linux.so和libdl.so有什么区别?
浏览 6
提问于2020-09-02
得票数 0
回答已采纳
1
回答
Unix/Linux环境中的动态链接类型
、
、
、
在创建windows静态库时,我们只需创建一个应该包含在链接器路径中的.lib文件。 在创建windows共享库以及.dll时,我们还生成了一个.lib文件。这个lib文件包含由库公开的API的签名。 有两种使用此库的方法 我们可以直接引用项目中的库API,并在链接器属性中将路径添加到.lib文件中。有些人称它为静态链接动态库。 或者,我们可以在运行时显式加载动态库。在这种情况下,我们不需要为链接器指定lib文件路径。调用它动态链接的动态库。 我的问题是,对于Linux上的共享库,我们也有类似的东西吗?或者仅仅是静态库(.a)和共享库(.so)? 我知道如何使用gcc -l选项在linux上包
浏览 0
提问于2014-11-19
得票数 2
回答已采纳
1
回答
解析共享库中的符号名(Linux)
、
、
、
我正在Linux中进行动态二进制分析。如果程序是动态链接的(加载时间链接),并且没有地址空间随机化,如果要调用标准库函数,我必须解析函数名。我在反汇编的代码中看到,调用标准库例程首先将分支到.plt部分的某个地址,其中PC正在加载那里计算的内存地址。顺便说一句,它是在ARM Linux,但一般的想法将是相同的,我想。 我是系统编程方面的新手。我不太了解库是如何链接的,地址是如何在运行时解析的。任何来自专家的想法都很感激。
浏览 2
提问于2012-09-13
得票数 1
1
回答
无法执行节点命令的二进制文件
、
、
当我执行:/bin/sh -xe节点-v时,会得到错误:节点:节点:无法执行二进制文件 请建议我需要做些什么来解决这个错误。 当我执行以下命令时: 文件/bin/bash输出:/bin/bash: ELF 64位LSB可执行文件x86-64,version 1 (SYSV),动态链接(使用共享库),用于GNU/Linux2.6.18 文件节点节点: ELF 64位LSB可执行文件,x86-64,version 1 ( GNU/Linux ),动态链接(使用共享库),用于GNU/Linux2.6.18,没有剥离
浏览 5
提问于2017-06-14
得票数 1
1
回答
动态链接器是Linux系统上内核或GCC库的一部分吗?
、
、
动态链接器(又名程序解释器,Loader)是内核还是GCC库的一部分? 更新 (28-08-16): 我已经发现,每个二进制文件(即通过共享库链接)使用的动态链接器的默认路径是到共享库/lib64/ld-linux-x86-64.so.2的链接,而共享库/lib/x86_64-linux-gnu/ld-2.23.so是实际的动态链接器。 它是libc6 (2.23-0ubuntu3)包的一部分,即。中用于AMD64架构的ubuntu。 我的实际问题是 如果这个辅助程序(d-2.23.so)不存在,那么所有动态链接的应用程序(全部,现在是一天)会发生什么? 对此的回答是“应用程序将不运行,甚至s
浏览 0
提问于2016-08-09
得票数 9
回答已采纳
1
回答
真正的入口点是动态加载器中的Linux程序吗?如何在调用堆栈中显示它?
、
、
、
我认为使用共享库(不是用-static编译)的Linux程序的启动过程是: (1)在bash中输入可执行文件的名称。 (2) Bash读取可执行文件,发现它包含一个".interp“部分,其中包含动态加载程序的名称。 (3) Bash分叉一个新进程,在子进程中,执行动态加载程序,并将可执行文件的名称/路径作为参数传递给动态加载程序。但我不知道入口点是什么,在动态加载程序中没有"_start“,即/lib64 64/ld-linux-x86-64.so.2。 (4)从Linux内核返回到用户模式后,--在用户模式下执行的第一条指令--应该是动态加载程序的入口点。 (5)动态加载器
浏览 5
提问于2021-04-08
得票数 1
回答已采纳
2
回答
外部库链接
、
、
、
我有一个可能有点傻的问题,因为我很确定我可能已经知道答案了。 假设您有静态库A、动态共享目标库B和linux下的程序C。假设库A调用库B中的函数,而您的程序调用库A中的函数。现在假设C在A中调用的所有函数都不使用B中的函数。 要编译C,只连接A而忽略B就足够了吗?而且,你的程序C可以在没有安装B库的系统上运行吗?
浏览 1
提问于2010-04-14
得票数 3
回答已采纳
2
回答
强制动态链接库
、
、
、
、
我从彼得·范德尔·林登( Peter Van Der Linden )的“专家C编程:深层C秘密”一书中了解到,有些特定的库是必须进行动态链接的;哪些是这些库,以及它们为什么强制动态链接?(更具体地说,在GNU/Linux系统上)
浏览 4
提问于2011-03-14
得票数 3
1
回答
从zip、内存等加载动态库
、
、
是否有方法从zip文件、内存或自定义包文件加载动态库(so或dll)?还是我在浪费时间?关于这件事,我在网上找不到任何东西。 编辑澄清:我正在寻找一个运行时加载动态库使用LoadLibraryEx (对于dlopen )或dlopen(对于Linux)。我可以轻松地从目录加载对象,但我想知道是否有一种方法可以将共享/动态库放在ZIP文件中并从该文件中加载它。
浏览 2
提问于2014-01-17
得票数 0
回答已采纳
1
回答
在linux环境下用c++调用.dll
、
、
、
、
我有windows动态链接库,我想从Linux环境中访问它。我没有这个库的源代码,所以我无法构建.so文件。 有没有办法通过使用Winelib或任何其他库或工具将库文件转换为.so文件,以便我可以调用该库中定义的函数?
浏览 5
提问于2015-03-12
得票数 0
1
回答
我可以动态地链接到linux的二进制构建来使用.Net和Mono吗?
、
、
、
、
我正在尝试为使用SPI的Raspberry构建一个.Net应用程序。用于Windows 10 IoT的SPI驱动程序将放慢速度。因此,我是否使用Mono将项目迁移到Linux (因为我的代码是用.Net编写的) 由于我在Windows上的IoT速度有问题,所以我考虑用c++编写SPI代码,并将它们动态地链接到.Net应用程序。但我很难在网上找到如何做到这一点的信息。这里有人知道吗? 总结一下这个问题。我希望在Linux上使用mono运行我的.Net应用程序,并动态链接我将用c++编写的库。 寻求任何帮助!
浏览 4
提问于2015-10-09
得票数 0
回答已采纳
2
回答
为什么linux不在同一个文件夹中搜索共享库
、
我知道linux通常在系统中的特定文件夹中搜索动态库,比如/lib, /usr/lib/, /usr/local/lib。如果找不到运行中的程序所需的共享库,那么它将显示一个错误。 我的问题是:为什么linux不实现在当前文件夹中查找库的特性。假设在上面提到的所有文件夹中搜索共享库之后,它将搜索当前文件夹中的共享库,然后才说没有找到该库。 这个特性不是很容易实现吗??还是我漏掉了什么?
浏览 3
提问于2016-12-10
得票数 0
回答已采纳
3
回答
linux服务器新手,关于使用可能不同版本的MPI执行二进制文件
、
、
、
我编写和编译了一些二进制文件,并通过SSH将它们上传到linux服务器上,该服务器通过SSH在远程超级计算机上运行,如果这些二进制文件是用英特尔的MPI库编译的,但是如果远程linux服务器没有在那里安装相应的MPI库,那么如果我将所需的英特尔MPI动态链接库文件上传到linux服务器上,二进制文件是否会正确执行?
浏览 4
提问于2013-01-31
得票数 0
1
回答
一个程序使用的多个共享库可以使用不同的静态链接libc吗?
、
、
、
、
在Windows上可以这样做(虽然不建议这样做,因为不同c库实例之间的pass标准库对象可能有问题),例如 每个可执行映像(EXE或DLL)都可以有自己的静态链接CRT,也可以动态链接到CRT。静态地包含在特定映像中或由特定映像动态加载的CRT版本取决于它所用的工具和库的版本。一个进程可以加载多个EXE和DLL映像,每个映像都有自己的CRT。 可以在Linux上完成吗? 是假的吗?但是像Linux这样的一般系统不应该有这样的限制,对吗?例如,如果代码库A和代码库B确实需要不同版本的libc才能很好地工作,并且假设它们都有非常简单的客户端C风格API (即在这些API中没有指针参数),那
浏览 5
提问于2021-04-08
得票数 0
2
回答
发布linux软件兼容性
、
我想为Linux发布一个C++库。是否只有glibc版本决定与其他Linux发行版的兼容性(当没有其他库被动态链接时)? 在过去5年中,是否有更好的方法来支持大多数Linux发行版,而不是设置几台虚拟机并在那里编译呢?例如,在一个非常老的Linux系统上编译的Linux二进制文件会在新的Linux版本上运行吗?
浏览 0
提问于2015-05-25
得票数 2
回答已采纳
1
回答
我们可以在窗口上使用.so文件吗?
、
、
、
我需要在windows和linux平台上为我的c++代码库动态创建和链接库。我知道DLL格式适用于windows,而.so则用于linux平台。但是我读到.so也可以在windows平台上链接。我的问题是,我能否创建一个通用动态库(.so)来在windows和linux上运行我的应用程序?如果是,怎么做?
浏览 3
提问于2016-01-18
得票数 1
回答已采纳
2
回答
将包含32位值的uint64_t传递给其参数实际上是uint32_t的外部函数安全吗?
、
、
我正在开发一个跨平台的程序,从一个带有C链接的动态库中调用一个函数。我需要支持这个动态库的多个版本,但在我需要支持的两个版本之间,有一个函数参数已从uint32_t更改为uint64_t。 如果我传递这个函数--包含仍可表示为uint32_t的值的uint32_t,即使该函数的参数实际上是uint32_t,也是安全的吗? 更具体地说: 如果编译到动态库中的函数的源是: extern "C" void foo(uint32_t param) { ... } 对我来说,使用这样的函数安全吗: extern "C" void foo(uint64_t); u
浏览 4
提问于2022-05-03
得票数 5
回答已采纳
4
回答
Linux中的依赖项解析
、
、
在Windows下,我使用了一个名为dependency walker的程序来检查应用程序正在使用的库。我想知道如何在Linux上实现标准二进制文件: ELF 32位LSB可执行文件,英特尔80386版本1 (SYSV),动态链接(使用共享库),用于GNU/Linux 2.6.0,已剥离 谢谢。
浏览 0
提问于2009-07-13
得票数 8
回答已采纳
3
回答
列出在Linux上使用C/C++执行的程序中的共享库
、
、
我想知道在Linux上执行C/C++程序时加载了哪些动态库。 例如, int main() { ... list = GetAllSharedLibraryFilePaths(); } 列表应包含: libm.so.6,librt.so.1,...或者路径: /lib/x86_64-linux-gnu/libm.so.6、/lib/x86_64-linux-gnu/librt.so.1 ... 是否有返回所有共享库文件路径的API?我知道ldd,readelf可以做到这一点,但我需要在加载共享库的可执行文件中使用C/C++编程来做到这一点。 谢谢。
浏览 7
提问于2019-12-10
得票数 2
1
回答
在Python中加载两个动态库实例
、
、
、
我有一个用Fortran编写的程序,并编译(用-fPIC)作为一个动态库。我在Python中加载了CDLL来执行一些数值计算。库使用内部持久内存(在模块中)保存中间值。我同时在Windows和Linux上工作(分别使用.dll和.so )。动态库打包在Python模块中,并安装在lib子目录中。 如果我运行在同一台计算机上加载动态库的两个不同的Python脚本,它们会得到一个单独的内部内存还是会访问相同的内部内存(从而破坏结果)? 如果我: 将它们加载到不同的多处理实例中。 将它们加载到不同的多线程实例中。 将它们装入两台不同内核的木星笔记本中。 在不同的Python虚拟环境中
浏览 0
提问于2019-03-23
得票数 1
回答已采纳
3
回答
是否多次加载DLL?
、
、
、
、
我使用函数在Windows中加载动态链接库。我的问题是:如果我为同一个DLL多次调用此方法,我是获得该DLL的不同实例的句柄,还是它们都引用同一个实例? 此外,这种行为如何与Linux SO文件相关,是相同还是完全不同,在这方面我可以做什么假设?谢谢。
浏览 3
提问于2012-02-08
得票数 9
回答已采纳
3
回答
C应用程序中的dlopen和dlclose内存管理
、
、
、
、
我使用dlopen加载一个动态库"lib1.so“,并调用一个公开的函数,比如A1,A1函数使用malloc分配100kb的动态内存,但没有释放它,在主函数中,我再次调用所有的dlclose。dlopen,调用函数A1,dlclose 我重复这个步骤10次,Purify报告这是1000KB的内存泄漏,valgrind报告间接丢失了1000KB。 你能建议100KB* 10次= 1000KB,这是真正的内存泄漏吗?当我们调用dlclose时,所有分配给动态库的内存都会被自动释放。 操作系统: Linux编程局域网:c
浏览 4
提问于2011-10-31
得票数 1
5
回答
跨平台动态链接(Windows到linux)
、
、
我有一个应用程序,我设法让它在windows和Linux之间保持合理的跨平台。Cmake和Boost在这方面的努力很有帮助。 现在是链接到为windows编写的.dll的时候了。如果我能推迟动态链接库的转换,那将是一件好事。其他windows应用程序连接到此库,如下所示: HINSTANCE dll; dll = LoadLibraryA(filename); //... libFuncPtr = (libFuncPtr)GetProcAddress(dll, "libFunc"); 我想知道这些函数是否有通用的类比,或者是时候开始删除我的系统特定的预处理器指令了吗?目前开发的
浏览 5
提问于2012-03-13
得票数 5
回答已采纳
1
回答
静态libgcc和静态libstdc++不工作
、
、
我尝试用-static -静态-libgcc-静态-libstdc++编译项目,以便静态链接库。但是,exec是用动态链接库编译的。我试着重新安装gcc和g++,但是没有帮助。这完全是我本地环境的错误,因为在别人的机器上,它是静态连接的。 ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=, not stripped 我有Ubuntu 14.10,gcc版本4.8.4 谢谢
浏览 5
提问于2015-07-15
得票数 2
1
回答
为什么libc依赖于ld.so?
、
、
、
我一直认为libc应该是一个独立的动态库,直到我发现: $ ldd /lib/x86_64-linux-gnu/libc.so.6 /lib64/ld-linux-x86-64.so.2 (0x00007fd743c00000) linux-vdso.so.1 (0x00007fffc75f4000) 有人能告诉我为什么libc需要ld.so吗?它使用什么功能?
浏览 3
提问于2021-01-05
得票数 2
回答已采纳
2
回答
确定是否存在动态库的多平台方法
、
、
、
我需要检查是否存在动态库,以便以后可以安全地调用使用该库的函数。 有没有一种多平台的方法来检查这个?我的目标是MS Windows7 (VC++11)和Linux (g++)。
浏览 2
提问于2013-04-10
得票数 5
回答已采纳
2
回答
当连接到动态共享库时,ld会做什么?
、
、
、
当将应用程序与动态共享库链接时,如 gcc -o myprog myprog.o -lmylib 我知道链接器(我的Linux上的ld)使用-l选项在生成的myprog可执行文件中存储库的名称(在本例中是mylib),这个库将在加载和链接时使用(如果忽略惰性动态链接,程序将在何时启动)。我想知道ld对动态共享库所执行的其他任务(我只是指编译时完成的静态链接步骤)? ld必须检查所提供的动态共享库中是否存在未定义的符号。 还有其他的东西吗? 此外,我将对您使用的关于ELF格式和动态链接和加载过程的指针(书籍、在线文档)感兴趣。
浏览 2
提问于2013-11-01
得票数 3
回答已采纳
2
回答
在Linux中共享可执行内存页?
、
、
、
、
为了保持空间,可以在Linux上共享可执行页面吗?我知道有一些共享内存API可以用于在不同进程之间共享内存,但我不认为这是用来实现共享内存的。 基本上,我希望有一个共享内存区域,可以将一些常用的共享库加载到其中。我想让动态链接器链接到预加载(只读)映像,而不是将所有共享库映像加载到每个进程(这似乎是一种浪费)。 这在Linux内核上是可能的吗?达尔文内核使用Mach VM的一个名为逗号( dyld共享缓存存储在那里)的特性实现了这一点。逗号页可访问每个进程,并在每个进程之间共享。 为了澄清,我知道什么是共享对象(库)。目前,动态链接器在Linux上所做的工作是将所有必需的库加载到程序的地址空间
浏览 6
提问于2012-04-11
得票数 2
回答已采纳
1
回答
如何构建elf解释器(ld-linux.so.2/ld-2.17.so)作为静态库?
、
、
、
、
如果我的问题不准确,我道歉,因为我没有太多的Linux相关经验。我目前正在从头开始构建一个Linux (主要遵循linuxfromscratch.org版本7.3的指南)。我遇到了以下问题:当我构建一个可执行文件时,它会得到一个硬编码路径,指向一个叫做ELF解释器的东西。 readelf -l program 显示类似这样的内容 [Requesting program interpreter: /lib/ld-linux.so.2] 我追踪到这个库ld-linux-so.2是glibc的一部分。我对这种行为不太满意,因为它使二进制文件非常不可移植-如果我更改/lib/ld-linux.so2的
浏览 11
提问于2013-07-29
得票数 5
1
回答
COM DLL -使用Mono而不是MS .NET框架
、
、
、
我有一个用C#编写的动态链接库,可以通过COM访问本地可执行文件(用Delphi编写)。现在我被要求使用Mono (在Windows上,而不是Linux上),而不是微软的.NET框架。 有可能做到吗?如果是,我该怎么做呢?
浏览 0
提问于2010-02-09
得票数 2
回答已采纳
1
回答
在android中没有链接的大型.a文件
、
我正面临这个问题,我正试图为一个android应用程序构建一个本地库。为此,我有一个静态库(.a),它被链接到动态库(.so)中。现在的问题是静态库太大(超过2GB)。当我编译动态库时,它试图与静态库链接,如果出现以下错误,它就会失败: d:/adt/android-ndk-r9c/toolchains/arm-linux-androideabi-4.8/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.8/../../../../arm-linux-androideabi/bin/ld.exe: fatal erro
浏览 2
提问于2014-04-07
得票数 1
回答已采纳
1
回答
什么时候在iOS中使用动态链接库?在iOS中使用动态库的优点是什么?
、
、
、
对于动态链接库、窗口中的和Linux与iOS之间的优势之间的区别,我感到很奇怪。 下面的⬇️句子是为了证明我为什么感到奇怪。 我了解到库可以分为静态库和动态库。 使用动态库的优点是允许其他应用程序使用相同的动态库( in Window,.dll file),这样可以减少每个应用程序的内存使用量,并且可以更容易地重新分发动态库而不是重新分发应用程序。实际上,在使用一些应用程序时,我可以体验到“没有XXX.dll文件”。 在Xcode中,当创建新项目时,我们可以选择框架和framework & library中的静态库。在创建项目后,我们可以选择如何成为Mach-O型的“可执行、动态库、静
浏览 4
提问于2021-04-21
得票数 2
回答已采纳
2
回答
Linux:是否有可能使用静态链接的二进制文件进行一些面向插件的编程?
、
、
、
假设我们有一个非常小的嵌入式系统,它只包含linux内核和一个静态链接的二进制文件,作为init运行。我们希望二进制文件能够在运行时动态加载外部插件。 在linux上是可能的吗?Dlopen只适用于共享库和动态链接,因为静态二进制文件不会将任何符号导出到外部世界,所以还有其他方法可以做到这一点吗?
浏览 4
提问于2011-12-16
得票数 2
回答已采纳
扫码
添加站长 进交流群
领取专属
10元无门槛券
手把手带您无忧上云
相关
资讯
Linux的系统调用与函数库的关系
SPSS调用python(4):创建动态命令
Linux系统调用实例和功能速查
警惕利用Linux预加载型恶意动态链接库的后门
介绍Linux下的系统调用过程
热门
标签
更多标签
云服务器
ICP备案
实时音视频
即时通信 IM
对象存储
活动推荐
运营活动
广告
关闭
领券