问题标签 [static-libraries]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
839 浏览

c++ - 如何指定库 X 必须静态链接?

我有一个与多个库链接的软件。它们都存在于动态 (.so) 和静态 (.a) 版本中。默认情况下,当使用 g++ 时,它会选择库的动态版本,这对我来说很好。

但是,其中之一绝对需要静态链接。我考虑过使用-static但后来它对所有这些都使用了静态版本,这不是我想要的。

如何指定库 X 必须静态链接,而其他库继续链接到 libs 的共享版本?

0 投票
3 回答
2567 浏览

c++ - GCC 编译的静态库包含什么?

我的应用程序链接到 libsamplerate.a。我这样做是为了更容易分发最终的二进制文件。

我担心 .a 文件中的代码可能取决于我还需要分发的其他一些库。

但如果不是这样,我担心我会因为包含多个副本而使我的应用程序过于臃肿。库。

libsamplerate.a 中到底有什么?只是 libsamperate 的字节码?或者更多?

0 投票
8 回答
207409 浏览

windows - 如何查看 Windows 库 (*.lib) 的内容

我有一个二进制文件 - Windows 静态库 (*.lib)。
有没有一种简单的方法可以从该库中找出函数的名称及其接口?

类似于emfarelfdump实用程序的东西(在 Linux 系统上)?

0 投票
4 回答
11192 浏览

iphone - 为 iPhone 创建静态库

我想将一个开源库用于我的 iPhone 应用程序。该库是用 C 语言编写的,并使用 Makefile 进行编译。我想使用静态库。

如果我将 .a 文件添加到我的项目依赖项中,它可以很好地与模拟器配合使用,但在针对 iPhone SDK 时它不会链接(当然因为 .a 文件是为英特尔平台编译的)。

我应该使用哪些 GCC 编译器标志来编译 iPhone SDK 的静态库?我认为“-arch”选项将为我提供 iPhone 架构,但没有运气。

任何帮助,将不胜感激。

0 投票
1 回答
2065 浏览

c++ - 在 AIX 上使用 pthread 进行静态链接

我已经阅读和研究了这几天,并决定我需要一些外部帮助!

(而且这个网站似乎是一个不错的地方,所以我想我会在这里发布我的问题,看看情况如何)

我们的小公司已经好几年没有在 AIX 上构建我们的应用程序了,我被分配了这项任务(幸好我喜欢挑战)。

我遇到的问题很容易描述,我可以看到其他人也在经历它,尽管我似乎无法找到答案。

如果我链接应用程序“非静态”,这意味着我不在构建命令中使用“-static”,则该应用程序在开发机器上运行良好,但在我们用于测试的其他 AIX 机器上运行良好。

【两机速记;

开发:

测试:

]

如果我与“-static”链接,则应用程序在开发机器上运行时会在引发异常时“中断”:

并且(好像这还不够),该应用程序仍然无法在测试机器上运行:

我应该在这里注意我们正在使用“-pthead”进行链接,并且我已经阅读了几篇文章说在使用 pthread 时静态链接是不合适的。

我的脑袋疼。

我将非常感谢您对此的任何意见。

0 投票
7 回答
7916 浏览

static-libraries - 库的大小和可执行文件

我有一个在 Windows 上使用 MSVC 创建的静态库 *.lib。库的大小是 70KB。然后我有一个链接这个库的应用程序。但现在最终可执行文件 (*.exe) 的大小为 29KB,小于库。我想知道的是:

  1. 由于库是静态链接的,我在想它应该直接添加到可执行文件大小,最终的 exe 大小应该比这更多吗?windows exe格式是否也会对二进制数据进行一些压缩?

  2. linux 系统的情况如何,即 linux 上的库大小(*.a/*.la 文件)与 linux 可执行文件(*.out)的大小有什么关系?

-广告

0 投票
1 回答
1056 浏览

visual-studio - 混合使用不同版本的 Visual Studio 2002 及更高版本构建的 C 代码静态库

我有一个使用 Visual Studio 2002 C (v7.0) 编译器和英特尔 Fortran 9.0.018 编译器编译并链接在一起的 C 和 Fortran 例程的静态可链接库。

我的库中的 C 代码调用并链接到 Microsoft C-RunTime (MSCRT) 2002 静态库(单线程)。我相信 2002 CRT 库的实际版本号是 v7.0

我将这个静态库称为“vs2002if9.lib”

我可以使用任何更高版本的 Visual Studio(2003、2005 或 2008)安全地静态链接到我的“vs2002if9.lib”,而不必担心调用程序在 C 运行时调用方面的行为方式吗?

还是我通过混合 CRT 静态库的版本来制造问题?

如果我将我的“vs2002if9.lib”提供给第 3 方软件开发人员怎么办?我对他们有什么要求?

0 投票
5 回答
17324 浏览

c++ - g++:静态库和动态库应该以什么顺序链接?

假设我们有一个名为“my_app”的主可执行文件,它使用了其他几个库:3 个库是静态链接的,另外 3 个是动态链接的。它们应该按什么顺序与“my_app”相关联?

但是这些应该以什么顺序联系起来呢?

假设我们得到了依赖于 libSB 的 libSA(如在静态 A 中)和依赖于 libSB 的 libSC:

和三个动态库:(libDA -> libDB -> libDClibDA基本的,libDC是最高的)

这些应该按什么顺序链接?基本的第一个还是最后一个?

似乎是正确的顺序,但是这样吗?如果任何动态库与静态库或其他方式之间存在依赖关系怎么办?

0 投票
7 回答
26361 浏览

visual-c++ - 静态库中的 VC++ 资源

是否可以将资源构建到静态库中并通过简单地与库链接来重用它们?

我主要考虑的是您在库中调用一个函数进而访问资源的情况。

0 投票
1 回答
290 浏览

c - ELF 文件版本

我正在处理elfdump命令的克隆。

elfdump -ecps *file*在所有可执行文件上运行时,我的程序运行良好。但是,当我在库文件(例如 libc.so)上运行程序时,它会为 .symtab 部分中的所有符号打印出不正确的版本号(特别是它们都为零)。我已经查看了很多次文档,但我无法弄清楚为什么会发生这种情况。

有人可以提供一些提示吗?或者可能如何检测它是否是一个库,所以我可以硬编码一个 0?