如何在gcc中静态链接共享库函数?
参考:
http://www.linuxquestions.org/questions/linux-newbie-8/forcing-static-
linking-of-shared-
libraries-696714/
http://linux.derkeiler.com/Newsgroups/comp.os.linux.development.apps/2004-05/0436.html
您需要链接库的静态版本。
共享库实际上是具有指定入口点的特殊html" target="_blank">格式的可执行文件(包括一些粘性地址问题)。它没有静态链接所需的所有信息。
您不能静态链接共享库(或动态链接静态)
标志-static将强制链接器使用静态库(.a)而不是共享库(.so)。默认情况下,并非总是安装静态库。因此,如果您需要静态链接,则必须安装静态库。
另一种可能的方法是使用statifier或Ermine。两种工具均将动态链接的可执行文件作为输入,并以输出形式创建包含所有共享库的自包含可执行文件。
主要内容:静态链接库,动态链接库,总结我们知道,C、C++程序从源文件到生成可执行文件需经历 4 个阶段,分别为预处理、编译、汇编和链接,本节将重点围绕链接阶段,对静态链接库和动态链接库做详细的讲解。 有关链接操作的具体细节,感兴趣的读者可阅读《 到底什么是链接,它起到了什么作用?》和《 符号——链接的粘合剂》这两节。总的来说链接阶段要完成的工作,就是将同一项目中各源文件生成的目标文件以及程序中用到的库文件整合为一个可执行文件。 通过
问题内容: 我有一个项目,其中有一个静态库,另一个有我的实际共享库。我的目标是链接到。在Linux / BSD上可以吗?尝试创建测试程序时,出现以下错误: ./prog1:/usr/local/lib/libtestlib.so.1.0:未定义的符号’‘ 我的猜测是,这是因为libhelper.a不是用while 编译的。使用共享库(也依赖于静态库)来构建程序的正确方法是什么? 谢谢! 问题答案:
问题内容: 我有一个第三方库,主要由大量的静态()库文件组成。我可以将其编译为单个库文件,但我确实需要将其作为单个共享库文件。 有什么方法可以将静态文件转换为共享文件?或更笼统地说,是否有一种将大量静态文件和一些目标文件合并为一个文件的好方法? 问题答案: 是否这样做(当然带有适当的-L) 不是吗
问题内容: 我正在编译一些在Debian Linux系统上使用libcurl的代码。我的开发机正在运行Debian 5,但我也希望二进制文件也可以在较旧的Debian 4系统上使用。 我发现如果指定 -lcurl ,它将链接到libcurl.so.4,但是Debian 4系统仅具有libcurl.so.3 有什么方法可以告诉GCC链接到libcurl.so.3(在Debian 4和5中都存在)还是
本文向大家介绍静态库和共享库之间的区别,包括了静态库和共享库之间的区别的使用技巧和注意事项,需要的朋友参考一下 在编程上下文库中是一种具有某种代码的东西,这些代码已经过预编译,可以在任何程序中重新使用以实现某些特定功能或特性。 现在,根据该代码库的执行和存储,将其分为两种类型,即静态库和共享库。 以下是静态库和共享库之间的重要区别。 序号 要点 静态库 共享库 1 定义 静态库是一个库,其中执行文
问题内容: 我可以使用带有静态链接的gcc构建可执行文件: gcc-静态xxx.c -o xxx 所以我可以在没有任何外部依赖库的情况下运行xxx。 但是,如果我要构建没有外部依赖库的共享库怎么办?我的意思是我希望共享库静态链接其外部引用。 问题答案: 这将起作用: 需要说明的是:-static标志(如果提供给gcc)会传递给链接器(ld),并告诉它与库的静态版本(.a)(由-l标志指定)一起使用