腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
精选内容/技术社群/优惠产品,
尽在小程序
立即前往
文章
问答
视频
沙龙
1
回答
什么是cmake中的模块库类型?
、
、
cmake 文档说, 共享库是动态链接并在运行时加载的。模块库是没有链接到其他目标的插件,但可以使用类似dlopen的功能在运行时动态加载。 实际上,我可以看到SHARED和MODULE类型目标在Linux上生成.so动态库。.so库是动态链接的,在运行时加载并使用dlopen()进行映射。这两类目标有何不同?
浏览 9
提问于2017-04-18
得票数 10
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
回答
gcc默认使用静态或动态库链接程序吗?
、
、
、
、
我在我的Linux系统上安装了相同库的静态和动态版本: /usr/lib/libsample.a /usr/lib/libsample.so 如果我设置参数-lsample,这些库中哪一个会使用gcc? gcc xxx.c -lsample 如何强迫gcc使用静态或动态版本的库?
浏览 4
提问于2014-03-30
得票数 12
回答已采纳
3
回答
动态加载静态库?
、
、
可以在运行时动态加载Linux中的静态libary *.a吗? 我读过 ...both静态库和共享库可以用作动态加载的库。 如何动态加载静态库?
浏览 6
提问于2010-09-02
得票数 9
回答已采纳
1
回答
什么时候在iOS中使用动态链接库?在iOS中使用动态库的优点是什么?
、
、
、
对于动态链接库、窗口中的和Linux与iOS之间的优势之间的区别,我感到很奇怪。 下面的⬇️句子是为了证明我为什么感到奇怪。 我了解到库可以分为静态库和动态库。 使用动态库的优点是允许其他应用程序使用相同的动态库( in Window,.dll file),这样可以减少每个应用程序的内存使用量,并且可以更容易地重新分发动态库而不是重新分发应用程序。实际上,在使用一些应用程序时,我可以体验到“没有XXX.dll文件”。 在Xcode中,当创建新项目时,我们可以选择框架和framework & library中的静态库。在创建项目后,我们可以选择如何成为Mach-O型的“可执行、动态库、静
浏览 4
提问于2021-04-21
得票数 2
回答已采纳
4
回答
Windows malloc替换(例如tcmalloc)和动态crt链接
、
、
、
、
使用多个DLL和QT的C++程序应该配备一个malloc替换(如),以解决性能问题,而性能问题可能是由Windows引起的。对于linux,没有问题,但是对于windows,有几种方法,我发现它们都没有吸引力: 1.将新malloc放入lib中,并确保首先链接到 。 这有一个缺点,例如。 2.使用lib.exe (Chrome)从静态libcrt库中删除malloc 这是测试/使用(?)对于,但是它的缺点是它只适用于静态链接crt。静态链接存在问题,如果一个系统库是根据msvcrt动态链接的,则可能存在。如果我正确理解它,那么tcmalloc就可以被动态链接,以便为所有自编译的dll提供一个公
浏览 13
提问于2009-05-13
得票数 24
1
回答
在linux环境下用c++调用.dll
、
、
、
、
我有windows动态链接库,我想从Linux环境中访问它。我没有这个库的源代码,所以我无法构建.so文件。 有没有办法通过使用Winelib或任何其他库或工具将库文件转换为.so文件,以便我可以调用该库中定义的函数?
浏览 5
提问于2015-03-12
得票数 0
1
回答
在Linux上运行时,来自免费pascal的LoadLibray函数失败
、
、
我正在尝试加载一个动态库<libname>.so,它存在于当前目录以及/use/lib、/lib、/lib32中。但是程序无法找到这些路径中的任何一条。 我正在运行一个pascal程序,它有以下方法 LibHandle := LoadLibrary( PAnsiChar(Trim('./libtrdp.so')) ); 它会失败并产生错误。 “此二进制文件没有动态库支持。在程序中使用动态库驱动程序在使用动态库之前重新编译应用程序。运行时错误235为$0805F292"。 如果有人知道这个问题,请让我知道,因为我已经在网上搜索,但找不到答案。 注意:我正在L
浏览 1
提问于2022-02-28
得票数 0
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
3
回答
Visual C++:什么是动态链接的.lib文件?
、
、
我注意到关于我使用的一个库的如下内容: 库被编译为.lib文件。 我的代码需要编译为多线程(Debug) DLL来链接到这个库。 我打开库的.sln (解决方案)文件(它是开源的),并在它的项目属性中看到以下内容 运行时库选项设置为多线程(调试) DLL. 配置类型设置为静态库(.lib) 我的困惑是: 上面的库选项中没有冲突吗?(静态库表示一个选项,DLL表示另一个选项) 什么动物是.lib,是动态链接?它与DLL有何不同? 注意,我意识到了Linux世界中静态库和动态库之间的区别。
浏览 2
提问于2010-02-12
得票数 0
1
回答
如何在Makefile中正确地包含-Wl,-rpath,$ORIGIN链接器参数?
、
、
我正在准备一个在linux (Ubuntu16.04)上的c++应用程序,它使用了一些我动态链接的poco库。我有项目文件夹,其中包括: include,bin,lib,src和build文件夹以及相关的Makefile。到目前为止,我使用了以下Makefile,它从/usr/local/lib获得了库 CC := g++ # Folders SRCDIR := src BUILDDIR := build TARGETDIR := bin # Targets EXECUTABLE := C++_APP TARGET := $(TARGETDIR)/$(EXECUTABLE) SRCEX
浏览 0
提问于2017-02-20
得票数 17
回答已采纳
1
回答
Python函数-如何动态设置数据库名称?
、
、
、
、
在Azure函数中,我有以下绑定。我需要找到一种动态分配databaseName的方法,因为使用myDatabaseName不起作用,就像在我的组织中一样,数据库名称带有环境标记。所以,我需要: myDatabaseName-DEVmyDatabaseName-UATmyDatabaseName-PRD 因此,我需要根据所处的环境动态创建数据库名称。这有可能吗?如果不是的话,最好的解决办法是什么?
浏览 4
提问于2022-08-17
得票数 0
1
回答
当我为我的代码使用ICC时,链接到由GCC构建的库
、
、
、
、
对于Linux上的一个个人项目,我想使用ICC。我的项目使用了Boost、Qt和其他几个库。这些库可以在Ubuntu库中找到,所以我想通过安装这些预先构建的库来节省时间。 我可以动态链接我的ICC构建的可执行文件和由GCC构建的库吗?
浏览 2
提问于2010-12-12
得票数 2
回答已采纳
1
回答
在不同的.so中总是内联函数
、
、
、
、
在Linux中,如果我将动态库中的函数声明为gcc,然后动态加载该库,则该函数会被动态链接器内联吗? 我正在编译-O3中的动态库,并且没有传递任何链接时间优化标志-flto。 真正的问题是:当一个函数从另一个库中被调用时,它是否值得像往常一样在动态库中声明它呢?
浏览 9
提问于2017-07-25
得票数 1
回答已采纳
1
回答
如何在linux内核模块中使用c++动态库
、
、
我必须向一个在linux内核级运行的模块添加一个插件,并且我必须访问一个可以定期更改的外部库,而不能停止该模块的执行 在用户空间级别,我知道我们可以使用动态库来制作这类东西。我的问题是:我们可以在内核级使用这种类型的库吗,否则是否有一个等同于内核的用户空间级动态库
浏览 2
提问于2015-08-17
得票数 0
1
回答
将.o库文件链接到共享对象中的问题
、
、
、
、
我正在开发一个可重用库的集合,这些库需要作为静态库(.a & .lib)和动态库(.so & .dll)提供。 我希望动态库的依赖关系管理尽可能简单(对于所需的每个功能,您只需要一个动态库),因此每个动态库所具有的所有函数依赖关系实际上都是静态地链接到它中的。因此,动态库动态地向下游客户端提供其功能,但它们的上游依赖关系是静态满足的。 这一切的结果是,我所有的静态库都需要用-fPIC编译,以便它们的代码适合链接到共享库。我们使用的任何第三方库也是如此。它必须是一个静态库,用-fPIC编译。 (我想,我可以同时为我的库构建PIC和非PIC变体-但我真的不想为每个目标平台第三次编译
浏览 2
提问于2013-07-25
得票数 1
回答已采纳
1
回答
如何在.NET中创建能够在Linux或其他操作系统上运行的应用程序
、
、
我听说用.net创建的应用程序可以在linux和其他使用mono框架的操作系统上运行。它在多大程度上是真实的。 它如何使应用程序独立于平台。单帧框架如何识别.net的动态链接库 如何托管我在asp.net中创建的站点,以便在linux服务器上托管。如果可能的话,所有的软件我都需要什么。 ,这和我要找的是同一个东西吗?它谈论的是创建服务而不是托管
浏览 2
提问于2010-08-02
得票数 0
回答已采纳
1
回答
基于dlopen的Android与动态加载库
、
、
、
我希望从外部文件目录动态加载共享库。 我创建库并在linux上进行测试,它可以工作。编译: gcc -fPIC -shared -静态-libstdc++-静态-libgcc test_lib.cpp constructor.cpp -o test.so 但是当我在android中使用它时,我得到了运行时错误: dlopen failed:库"libc.so.6“未找到。 我怎么能解决呢?我用仿真器
浏览 3
提问于2016-06-02
得票数 4
回答已采纳
1
回答
内隐动态链接与显式动态链接-哪个更有效?
、
、
、
有两种连接共享库的方法。 一个名为隐式动态链接,另一个命名为显式动态链接。 我在googled上搜索了一些没有找到的文档,说明了两者在效率上的差异。 以linux .so文件为例。我的疑问是:与显式方式相比,隐式链接会导致更多的IO或cpu或内存吗? 想知道哪种方法更有效,为什么? 非常感谢!
浏览 1
提问于2018-03-14
得票数 1
回答已采纳
2
回答
什么地方是利布工具,什么时候使用它?
、
、
、
、
在适应GNU autoconf和GNU automake之后。我决定开始学习libtool。但我仍然不能清楚地看到在现实世界中使用它的好处。 正如我所读到的,主要的好处是可移植性问题,即系统是否支持动态库。然而,由于大多数UNIX-like OS主要是GNU/Linux、BSD-flavors或Mac OS,所以很难面对不支持动态库或具有奇怪库标准的OS。 所以我的问题是,是否值得使用libtool
浏览 4
提问于2015-04-13
得票数 5
回答已采纳
1
回答
是否有方法从ELF中提取符号,并使用LD将另一个文件与前一个ELF中定义的符号链接起来?
、
、
、
、
我正在使用devKitPro专门为任天堂Wii创建一个应用程序。我想让我的应用程序模块化,方法是提供加载通过objcopy -O二进制文件传递的代码的能力。我的问题是,我希望这些模块能够使用加载到内存中的主ELF中的符号。我尝试过各种事情,但我没有想出任何解决办法。 我试过使用-Map,因为我认为它可以让我使用链接器映射,但是这个想法失败了。 我还试着编译到一个共享库中,但这对我没有用,因为链接器抱怨“动态重定位的只读段”。 我真的需要帮助,因为我既不是Windows环境,也不是Linux环境。
浏览 1
提问于2014-05-03
得票数 3
1
回答
zOS中的动态链接
、
我必须在zOS中创建一个动态链接库。要传递给编译器的选项有哪些。 另外,如何检查zOS中的库是否动态链接依赖于其他库。我们在linux中有ldd,它显示了这种联系。我们在zOS的土地上有'ldd‘的等价物吗?
浏览 0
提问于2010-12-09
得票数 5
回答已采纳
2
回答
如何从节点红节点访问sqlite数据库?
、
、
我正在创建一个使用SQLite节点访问SQLite数据库的节点红色API服务。如何使用SQLite节点配置数据库? 我在SQLite节点上有硬编码的db文件.开发访问SQLite数据库的节点红色API的正确方法是什么?我想让数据库文件名是可配置的,这样就可以动态获取它。 我对节点红色编程很陌生.
浏览 0
提问于2019-10-13
得票数 0
回答已采纳
1
回答
python加载静态库
、
、
我有一个新的问题与加载动态链接库的这里。我没有任何问题加载动态链接库的".so",".dll“扩展。现在我对扩展名为".a“的动态链接库遇到了一些问题。它是一个静态库。下面是我的代码 Security_dll = ctypes.cdll.LoadLibrary("./staticlibraryname.a") 顺便说一句,我的os env是一个linux开放的suse。当我尝试这样做时,我得到的确切错误消息是: File "module3.py", line 3, in <module> Security_dll =
浏览 1
提问于2016-12-09
得票数 0
1
回答
“静态链接”是什么意思?
据我理解,so文件是动态库。我们可以使用ldd打印它的依赖项。 例如,我可以执行ldd -r /usr/lib/aarch64-linux-gnu/libstdc++.so.6来获得输出,如下所示: linux-vdso.so.1 => (0x0000ffff793f7000) libm.so.6 => /lib/aarch64-linux-gnu/libm.so.6 (0x0000ffff79173000) libc.so.6 => /lib/aarch64-linux-gnu/libc.so.6 (0x0000ffff7902c000)
浏览 0
提问于2018-07-11
得票数 2
回答已采纳
1
回答
共享库中的断点会导致所有应用程序在其上崩溃吗?
、
、
、
、
例如,使用Linux,一个新的应用程序正在使用一个共享/动态.so库。 在调试应用程序时,如果我们能够在该共享库中设置一个断点,那么同时使用该共享库的其他应用程序是否会受到影响?
浏览 5
提问于2022-10-13
得票数 1
回答已采纳
1
回答
从zip、内存等加载动态库
、
、
是否有方法从zip文件、内存或自定义包文件加载动态库(so或dll)?还是我在浪费时间?关于这件事,我在网上找不到任何东西。 编辑澄清:我正在寻找一个运行时加载动态库使用LoadLibraryEx (对于dlopen )或dlopen(对于Linux)。我可以轻松地从目录加载对象,但我想知道是否有一种方法可以将共享/动态库放在ZIP文件中并从该文件中加载它。
浏览 2
提问于2014-01-17
得票数 0
回答已采纳
2
回答
linux中的/MT (VC++)与g++ (CentOS)的等效开关是什么?
、
、
、
、
我的用户抱怨说,他们必须在他们不拥有的机器上安装linux线程构建块,而且许多主机不希望为我的最终用户安装英特尔线程构建块,因此我希望创建一个静态版本的动态库/插件/模块/扩展(不管插件C++程序/ dll / so的相关术语是什么)。 我发现对于Windows,我必须使用/MT (多线程),而不是默认的/MD开关(多线程DLL),这样我的程序就没有依赖项(但是,windows有一个并发容器库,所以我不需要在那里使用)。 我只是不知道linux的等价性是什么? 或者,是否有一个.sln到makefile转换器,可以计算出所有的选项? 我正在Windows上进行开发,但我的大多数最终用户都使用l
浏览 1
提问于2013-07-17
得票数 2
回答已采纳
1
回答
哪些库出现在/proc/$PID/pmaps中?
、
、
、
、
在Linux上,您可以检查/proc/$PID/pmaps来查看特定程序加载的库,程序可以打开/proc/self/pmaps来检查它自己加载的库。 我知道pmaps只包含动态库,显然内核不能预测以后我们可能打开哪些库,所以我希望这些库不会包含在/proc/self/map中。但我不确定还有其他几种情况: 库在构建时已经被链接了,但我们还没有调用任何函数吗?我的理解是Linux将链接符号延迟到第一次使用,所以我不确定它们是否会出现。 pmaps是否包含递归使用的所有库?例如,如果我查看pmaps中的每个库并在其上运行ldd,然后在这些库上运行ldd,那么我不应该在原始的pmaps中找到
浏览 5
提问于2013-02-08
得票数 0
回答已采纳
2
回答
当连接到动态共享库时,ld会做什么?
、
、
、
当将应用程序与动态共享库链接时,如 gcc -o myprog myprog.o -lmylib 我知道链接器(我的Linux上的ld)使用-l选项在生成的myprog可执行文件中存储库的名称(在本例中是mylib),这个库将在加载和链接时使用(如果忽略惰性动态链接,程序将在何时启动)。我想知道ld对动态共享库所执行的其他任务(我只是指编译时完成的静态链接步骤)? ld必须检查所提供的动态共享库中是否存在未定义的符号。 还有其他的东西吗? 此外,我将对您使用的关于ELF格式和动态链接和加载过程的指针(书籍、在线文档)感兴趣。
浏览 2
提问于2013-11-01
得票数 3
回答已采纳
1
回答
SWT:提供多平台下载包
、
、
对于我们的SWT应用程序,我想提供一个通用的Linux下载包,它可以在32位和64位VM上启动。目前,我们使用清单定义类路径,并使用java -jar main.jar启动应用程序。清单类路径包含多个swt*.jars,并选择第一个匹配的(没问题,因为目前每个平台只分发一个)。 简单地交付两个SWT库,swt-linux-32.jar和swt-linux-64.jar,看起来并不是很有前途,因为用户要么必须手动删除错误的库,要么脚本必须动态设置整个应用程序类路径(可怕!)。 我考虑过提供两个启动器脚本,一个用于32位虚拟机,另一个用于64位虚拟机,从清单类路径中删除swt.jars,并显式地将
浏览 1
提问于2011-10-14
得票数 2
回答已采纳
1
回答
创建在运行时链接的dylib
、
、
我正在尝试创建一个动态库,它的目的是在运行时链接并加载到主机环境(例如,类似于Java中类加载的工作方式)。因此,我希望动态库保留几个“悬空”引用,我希望它在加载到该环境时能够从其宿主环境中获取这些引用。 我的问题是,如果不显式地将动态库链接到现有的符号,我就无法知道如何创建动态库。我希望生成一个动态库,它不依赖于特定的主机可执行文件(或主机库),而是一个能够在任何主机中加载(例如,dlopen)的库,只要主机使两个符号可用即可使用。 现在,我尝试过的任何链接命令都会导致符号丢失的抱怨。我希望它允许符号丢失(理想情况下,只是特别指定的符号)。 例如,这里有一个带有OS错误的记录: $ cat
浏览 5
提问于2013-11-12
得票数 1
回答已采纳
4
回答
如何快速动态加载经常重新生成的c代码?
、
我希望能够动态生成C代码,并将其快速重新加载到我正在运行的C程序中。 我用的是Linux,怎么做呢? Linux上的库.so文件可以在运行时重新编译和重新加载吗? 是否可以在不生成.so文件的情况下对其进行编译,编译后的输出是否会以某种方式进入内存,然后重新加载?我想快速重新加载编译后的代码。
浏览 0
提问于2012-09-07
得票数 9
回答已采纳
4
回答
DLL-s在Linux上使用C++
、
、
我试图找到如何使用google在linux上创建DLL-s,但得到了非常混乱的信息。 在linux上编写动态链接库是可能的吗?如果没有,有没有其他方法可以从几个正在运行的程序中调用另一个模块中的代码?
浏览 1
提问于2008-09-28
得票数 2
回答已采纳
1
回答
在T-SQL中创建server.database.table的动态路径
、
、
、
我正在尝试动态创建表。一个数据库(@sourcedatabase)中的表用于在另一个数据库(@targetdatabase)中创建表。 当我显式地命名数据库时,这很好用。但是,我希望它们是动态的,如下面的示例所示。我已经读了很多关于这方面的东西,我可以使用下面这样的东西 set @sql = 'DROP TABLE ' + @targetdatabase + '.' + @SomeNAME execute (@sql) 但当它变得更复杂时,我会感到困惑: declare @sourcedatabase as varchar(max) = 'DATABA
浏览 0
提问于2012-10-02
得票数 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
回答已采纳
1
回答
QT嵌入翻译适用于Windows,而不是Linux
、
、
、
在SQLiteStudio中,我开始使用CONFIG += lrelease embed_translations自动将所有翻译嵌入到应用程序的资源中。我这样做是为了宣布: CONFIG += lrelease embed_translations QM_FILES_RESOURCE_PREFIX = /msg/translations TRANSLATIONS += $$files(translations/*.ts) 这是针对所有模块(在其pro文件中)完成的。模块被编译成共享库(例如coreSQLiteStudio、guiSQLiteStudio,然后有一个可执行模块sqlitestu
浏览 12
提问于2022-07-27
得票数 -1
回答已采纳
1
回答
什么类型的文件可以动态加载?
、
、
“操作系统概念”,Silberschatz A.,Galvin P. B.,加涅G. -操作系统概念,第9版-2012年 8.1.4在我们讨论的动态加载中,整个程序和进程的所有数据都必须在物理内存中才能执行。因此,进程的大小仅限于物理内存的大小。为了获得更好的内存空间利用率,我们可以使用动态加载.对于动态加载,在调用例程之前不会加载它。所有例程都以可重定位的加载格式保存在磁盘上。主程序加载到内存中并执行。当一个例程需要调用另一个例程时,调用例程first将检查另一个例程是否已加载。如果没有,则调用可重定位的链接加载器将所需的例程加载到内存中,并更新程序的地址表,以重新进行fl等更改。然后将控件传递
浏览 0
提问于2018-10-17
得票数 1
1
回答
Java - Azure应用程序Insight动态跟踪不处理坞图
、
、
、
、
Azure函数具有为Java提供App的动态跟踪功能。它针对几个库收集度量。完整列表。 按照的要求,对于Linux,添加配置ApplicationInsightsAgent_EXTENSION_VERSION=~3应该可以使其工作。如果将azure函数部署为代码运行时,它将按预期工作。 但是,当天青功能被部署到码头时,它就不起作用了!
浏览 5
提问于2022-02-11
得票数 2
回答已采纳
3
回答
同一(Boost) DLL的多个版本可以在同一进程中共存吗?
、
、
、
我的(C++,跨平台)应用程序大量使用Boost库(比如1.x版本),我还想链接到第三方(供应商)的SDK (无源),本身使用的是Boost (但版本是1.y)。 因此,我们都动态链接到我们自己版本的Boost DLL,CRT是相同的。因此,在运行时,我的应用程序必须加载Boost 1.x & 1.y的两个动态链接库。 与之相关的潜在问题和陷阱是什么? 我不能更改供应商的SDK,但我可以更改我的应用程序。也许我应该尝试对我的Boost 1.x进行静态链接 PS:Boost的动态链接库的名称包含了它们的版本,所以没有名称冲突,两者都是可识别的。不是通常的动态链接库-地狱。
浏览 1
提问于2009-03-27
得票数 9
4
回答
Linux: C/C++标准库静态与动态链接
、
、
、
、
在任何操作系统上都可能静态或动态地编译C++/C标准库。在Windows上,我总是喜欢静态构建,因为它有助于避免在特定的Windows版本、版本和服务包上安装或未安装不同版本的库的"dll地狱“问题。静态链接使软件更易于移植,更少依赖最终用户对其操作系统所做的操作(我甚至看到了一些示例,当最终用户可以在system32中的一些dll上创建dll时,他无法解释为什么,或者当用户声称我的应用程序包含病毒,因为它试图从官方微软网站下载动态链接的先决条件时……)所以,在我的经验中,在Windows上静态链接通常比动态链接更好。然而,我对Linux并不熟悉,所以任何人都能分享他的经验吗?我的问题
浏览 4
提问于2014-02-19
得票数 6
回答已采纳
1
回答
在linux上使用私有C++运行时库
、
、
、
在Windows中,动态加载程序总是首先在加载的可执行文件路径中查找模块,这样就可以在不影响系统库的情况下拥有私有库。 Linux上的动态加载程序只在固定路径中查找库,也就是说它独立于所选的二进制文件。我需要GCC 5的溢出检查算术函数,但由于C++ ABI在4.9到5之间变化,一些应用程序变得不稳定,重新编译它们解决了这个问题。在等待我的发行版kubuntu升级默认编译器时,是否有可能让新编译的应用程序链接到新的运行时,而打包的应用程序仍然通过静态链接或模仿Windows行为的方式链接到旧库? 模拟它的一种方法是创建一个包装脚本。 #!/bin/bash LD_LIBRARY_PATH=$(
浏览 2
提问于2015-08-05
得票数 1
回答已采纳
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
回答
推迟共享库的链接
、
、
、
如果我在linux中使用一个共享库,如果应用程序必须在运行时找到这个库,为什么我需要将它链接到-l? 难道我不能在链接步骤中传入一个带有适当函数签名的虚拟.so,并在运行时用一个真正的.so替换它,然后仍然让它正常工作吗? 有没有一种方法可以只用一个头文件编译应用程序,并在运行时进行链接?
浏览 5
提问于2012-05-24
得票数 1
1
回答
面向对象程序设计中的静态变化与动态变化
我知道对于静态变化,我们使用继承,而对于动态,我们使用对象组合。有没有人能给我举个简短的例子,说明对象组合是动态的,而继承是静态的?
浏览 2
提问于2013-07-31
得票数 0
1
回答
我能在Embarcadero C++Builder中为安卓(*.so)构建一个共享库吗?
、
、
、
、
我正在尝试使用Embarcadero的C++Builder和RADStudio10.2创建一个共享库。我创建了一个C++Builder“动态链接库”项目。当我指定要构建的目标平台时,唯一的选项是32位Windows、64位Windows和OS。我还需要能够为Android (Linux)平台构建库。我怎样才能做到这一点?
浏览 4
提问于2017-06-26
得票数 1
回答已采纳
7
回答
在Linux上使用静态链接的应用程序有什么缺点吗?
、
、
、
我在这里看到了几个关于这个主题的讨论,但我想问一下我的特殊情况: 如果我有一些我的应用程序正在使用的第三方库,我想将它们链接在一起,以省去在LD_LIBRARY等方面的麻烦,那么在Linux上,除了更大的文件大小之外,它还有什么缺点吗? 另外,是否可以只静态链接一些库,而将其他库(标准Linux库)动态链接? 谢谢。
浏览 7
提问于2009-05-19
得票数 2
1
回答
__attribute__((弱))和LD_PRELOAD
、
、
我想要一个代码能够运行一个应用程序与一个特定的自写库,而没有它。因此,我使用__attribute__ ((weak))并在需要时预加载库。我需要在不重新编译的情况下这样做。不过,如果我静态地链接库,一切都会很好。 此外,库是用C++编写的,而使用它的应用程序可以是C++或C。 我说到底是这样: 库头test_lib.h #ifdef __cplusplus extern "C" #endif void test_func() __attribute__ ((weak)); 图书馆实现test_lib.cpp #include "test_lib.h"
浏览 3
提问于2013-04-12
得票数 2
回答已采纳
1
回答
当我的可执行程序在Linux上使用时,如果我更改了C++动态共享库,会发生什么?
、
、
、
、
我在Linux上有一个C++动态共享库abc.so,我的可执行程序用dlopen动态加载它,然后在使用rm + cp的情况下使用rm + cp覆盖一个新版本,但是有时也会出现coredump,但我意识到这可能与动态共享库上加载的延迟有关,但我无法确认,任何人都可以帮助我找出为什么?非常感谢!
浏览 4
提问于2019-09-19
得票数 3
回答已采纳
1
回答
导出链接到动态库的静态库中的符号
、
、
、
、
在MSVC2017中有以下场景: 函数bool foo()的静态库 链接到上面的静态库的动态链接库。 使用显式运行时链接加载动态链接库并通过foo()调用GetProcAddress的应用程序。 在静态库中,foo()的定义如下: extern "C" __declspec(dllexport) bool foo() { return true; } 现在,由于动态链接库没有使用foo(),所以当应用程序使用GetProcAddress时,它的符号无法导出,因此不可找到。 我试过: #pragma comment(linker, "/
浏览 0
提问于2019-05-27
得票数 5
扫码
添加站长 进交流群
领取专属
10元无门槛券
手把手带您无忧上云
相关
资讯
Linux库概念,动态库和静态库的制作,如何移植第三方库
linux文本替换-sed命令
生成 Linux 运行时间报告的 Bash 脚本
警惕利用Linux预加载型恶意动态链接库的后门
如何记录 Linux 的系统运行时间的统计信息
热门
标签
更多标签
云服务器
ICP备案
对象存储
实时音视频
即时通信 IM
活动推荐
运营活动
广告
关闭
领券