问题标签 [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 投票
3 回答
6399 浏览

iphone - 从 iPhone/CocoaTouch 库中链接库的正确方法

我正在为 iPhone 编写一个静态库,我想知道我正在做的事情是否值得推荐,或者我是否应该采取不同的方法。

我正在编写的静态库依赖于 libxml2。libxml2 有一个动态库(dylib)和一个静态库(a)。我尝试了两种方法。

方法一 - 当我尝试通过将“-lxml2”添加到“其他链接器标志”来链接静态库时,构建失败并显示以下消息:

方法二 - 我可以从我的静态库中成功链接到动态库,但我不确定这在 iPhone 上是否允许(或正确的方法)。即使我正在构建一个静态库,Apple 是否允许链接到动态库的静态库?我仍在学习静态库,但据我了解,dylib 中的代码将与我的代码组合成一个库,因此链接到 dylib 应该不是问题。

总结一下:

  • mylibrary.a -> libxml2.a [不起作用]
  • mylibrary.a -> libxml2.dylib [构建,但这是正确且可接受的吗?]
0 投票
5 回答
61715 浏览

c - 将静态库转换为共享库?

我有一个第三方库,主要由大量静态(.a)库文件组成。我可以把它编译成一个单一的.a库文件,但我真的需要它是一个单一的.so共享库文件。

有没有办法将静态.a文件转换为共享.so文件?或者更一般地说,有没有一种好方法可以将大量静态.a文件与几个.o目标文件组合成一个.so文件?

0 投票
3 回答
16395 浏览

c - 组合静态库

假设我有三个C静态库,说libColor.a取决于 *libRGB.*a ,而后者又取决于libPixel.a。据说库libColor.a依赖于库libRGB.a,因为在 libColor.a 中有一些对libRGB.a中定义的一些符号的引用。如何将上述所有库组合成一个独立的新libNewColor.a

独立意味着新库应该定义所有符号。因此,在链接时,我只需要提供-lNewColor。新库的大小应该是最小的,即它不应该包含libColor.a等未使用的 libRGB.a 中的任何符号。我在ar命令中使用了各种选项(用于创建和更新静态库/档案) )。

0 投票
3 回答
4062 浏览

visual-c++ - 如何强制 MSVC++ 忽略静态库的 CRT 依赖项?

我不知道是否可以这样做,但我希望将 /NODEFAULTLIB 应用于静态库项目。

我有许多使用通用静态库 D.lib 的应用程序项目(A.exe、B.dll、C.dll)。这个库有很多代码,也有其他 .lib 依赖项。其中之一是 openssl 库,它似乎是针对 CRT 的发布版本为 win32 构建的(我没有原始项目/源)。

到目前为止,为了避免混合 CRT 的发布/调试版本,我必须将 /NODEFAULTLIB:msvcrt.lib 链接器指令放在所有叶项目(A.exe、B.dll)中。这可行,但我认为这不是处理该问题的理想方式。我试图把这个属性放在 D.lib 项目中,但它没有效果。

有没有办法强制 msvc++ 忽略第 3 方库中的 msvcrt.lib 依赖项?

0 投票
6 回答
17384 浏览

iphone - 你能从 iPhone 上的静态库中引用 Xib 文件吗?

在我的应用程序中,我目前将所有代码分离到一个静态库中,以便更轻松地为实际应用程序设置 xcode 项目目标并为我的代码进行单元测试。这样做的问题是我也想将我的大部分 xib 文件放在静态库中,但似乎当我运行我的应用程序并尝试引用 xib 时它找不到它,除非它包含在实际中应用程序的目标而不是静态库目标。是否可以在静态库中包含 xib 文件和其他资源,这些资源可以被同一库中的代码引用,如果可以,如何?

0 投票
6 回答
5086 浏览

visual-studio - 我可以在 Visual Studio 2008 中使用 Visual Studio 6 编译的 C++ 静态库吗?

是否可以在 Visual Studio 2008 中使用使用 Visual Studio 6 编译的 C++ 静态库 (.lib)?

0 投票
3 回答
6244 浏览

iphone - 将静态库添加到 iPhone 项目

这个问题的动机是我试图让 LDAP 函数与 iPhone 应用程序一起工作,这是我在论文的一部分中尝试的一个项目。

当我开发应用程序时,我使用了 Mac OS X 中的 ldap.framework 框架。这在模拟器中运行良好,但是当我现在尝试在设备上获取应用程序时,它告诉我不允许这样做使用这个框架。

经过一番研究,我发现我可以使用 arm 架构构建 openldap,并将静态库添加到我的设备应用程序中。

我最终设法通过设置此处提到的变量并使用以下命令来编译配置和构建 openldap...

有人告诉我,我要查找的文件的扩展名为“.a”,所以我搜索了一个提到 ldap 的“.a”文件...

所以我假设这些是我需要的文件?

我的问题是我接下来要做什么?我知道我需要将库添加到 Xcode 项目中,并且可能还会添加大量“.h”文件?

如果有人能给我一个指向文档的指针或阐明下一阶段的任何信息,我将不胜感激。

非常感谢,阿德

附言。我还在我的博客www.greenpasta.com上谈到了这个过程。

0 投票
1 回答
2614 浏览

shared-libraries - 想详细了解共享库相对于静态库的工作方式

我正在创建和链接共享库(.so)。在与他们合作时,弹出了许多问题,当我搜索它们时我找不到令人满意的答案,因此将它们放在这里。我有关于共享库的问题是:

1.) 共享库与静态库有何不同?它们的创建方式和执行方式的主要区别是什么?

2.) 如果是共享库,在什么时候将加载和运行共享库中的特定函数的地址?谁提供这些功能是加载/运行地址?

3.) 与与静态库链接的应用程序相比,与共享库链接的应用程序执行速度会慢吗?

4.) 在这两种情况下,应用程序的可执行文件大小会有所不同吗?

5.) 可以通过进入共享库中定义的函数来进行源代码级调试吗?是否需要任何额外的东西才能使这些功能对应用程序可见?

6.) 使用这两种库的优缺点是什么?

谢谢。

-广告

0 投票
12 回答
31883 浏览

c# - 什么是动态语言,为什么 C# 不合格?

听播客,我听说 C# 不是动态语言,而 Ruby 是。

什么是“动态语言”?动态语言的存在是否意味着存在静态语言?

为什么 C# 是一种动态语言,而其他哪些语言是动态的?如果 C#不是动态的,那么微软为什么要大力将其推向市场?

以及为什么大多数 .NET 程序员都为之疯狂而离开其他语言并转向 C#?

为什么 Ruby 是“未来的语言”?

0 投票
5 回答
70139 浏览

build-process - ld 链接器问题: --whole-archive 选项

--whole-archive我见过的链接器选项的唯一真正用途是从静态库创建共享库。最近我遇到了 Makefile(s),它在与内部静态库链接时总是使用这个选项。这当然会导致可执行文件不必要地拉入未引用的目标代码。我对此的反应是,这是完全错误的,我在这里遗漏了什么吗?

第二个问题与我读到的有关整个存档选项但无法完全解析的内容有关。--whole-archive如果可执行文件还与共享库链接,则在与静态库链接时应使用该 选项,而共享库又(部分)具有与静态库相同的目标代码。那就是共享库和静态库在目标代码方面有重叠。使用此选项将强制在可执行文件中解析所有符号(无论是否使用)。这应该避免目标代码重复。这很令人困惑,如果在程序中引用了一个符号,它必须在链接时唯一地解析,这个关于复制的业务是什么?(如果这一段不是很清楚的缩影,请原谅我)

谢谢