目标:使用一个来自不导出符号的可执行文件中的函数的共享库。 方法:gcc -Wl,--defsym,function=0x432238 该手册说明:"--defsym symbol=expression" Create a global symbol in the output file,...
我明白动态链接的好处(旧代码可以自动利用库升级,它更节省空间),但它确实有缺点,特别是在异构的Linux生态系统中。这使得难以分发一个“只需运行”的与发行版无关的二进制文件,并且因为系统升级破坏了向后兼容性或将回归引入到共享库中,从而使先前工作的程序更容易出现故障。 考虑到这些劣势,为什么动...
我在用户空间的fuse库中添加了一个新功能(fuse_lowlevel_notify_inval_directory)。编译和创建libfuse.so没有出现错误。但是当我的应用程序尝试使用这个新功能时,链接器会抛出错误:undefined reference to `fuse_lowleve...
我已经在Ubuntu 12.04上构建了一个应用程序,并尝试在嵌入式系统上运行它。我在我的开发机器上运行了apt-cache show libc6,其中显示了以下内容(以及其他内容): Package: libc6 Priority: required Section: libs Archi...
我所见到的唯一真正使用--whole-archive链接器选项的方法是从静态库创建共享库。最近,我遇到了一些使用这个选项来链接内部静态库的Makefile。当然,这会导致可执行文件不必要地引入未被引用的目标代码。我对此的反应是这是错误的,我有什么遗漏吗? 我有第二个问题与我读到的关于整个存档...
我一直在从事一个大型的C++项目,它有近300 MB大小且超过800个文件。当二进制文件崩溃时,我想获得调用堆栈,并捕获了信号并将调用堆栈从backtrace_symbols写入文件中。但要从backtrace_symbols获取符号名称,我必须使用链接器标志'-rdynamic'进行编译。我...
我需要处理一个包含许多模板类的库,这些类都被实现在头文件中。目前我正在尝试找到一种方法来减少编译时间,因为我必须在每个编译单元中包含整个库,导致编译时间过长。 即使是对于模板,使用前向声明是否也是一种可能性呢?我试图按照下面的示例进行操作,通过避免像 #include <vector&...
我们的产品中包含一些动态链接到系统库(如“libpam”)的Linux二进制文件。在某些客户系统上,当程序运行时,我们会在标准错误输出中收到以下错误信息:./authpam: /lib/libpam.so.0: no version information available (require...
在编译语言中,编译器将源代码转换为目标代码,并将不同的目标文件(如果有多个文件)通过链接器进行连接。然后,加载器将连接后的文件加载到内存中以执行。 如果我使用解释性语言(例如ruby或python)编写一个应用程序并且源代码分布在多个文件中,那么这些文件何时被合并?换句话说,链接是何时完成的...