问题标签 [static-linking]

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 投票
2 回答
89 浏览

visual-studio - 有没有办法在编译时加入(链接?)托管(.net)dll?

我正在构建一个项目,该项目由两个 .net 可执行文件和一个包含两个可执行文件共享的公共组件的类库组成。为了便于分发,我希望能够在不分发 dll 的情况下分发这两个可执行文件(抓取和运行分发)。

有没有办法让 Visual Studio 将 dll 的内容编译到每个可执行文件中,而无需手动将类复制到每个项目中(从而在多个地方复制代码)?

0 投票
2 回答
583 浏览

dll - 如何构建一个不需要 DLL 的程序

如何编译(Haskell)程序以使其不需要 DLL?

我编写了一个使用 GLUT 并需要 glut32.dll 的程序。我用ghc --make program.hs. 现在我想分发我的程序,但我不希望它需要任何 DLL(所以我可以将 .exe 提供给用户)。我尝试编译ghc -static --make program.hs但没有用,我仍然收到“用户错误(未知的过剩条目 glutInit)”。

我怎样才能做到这一点?

0 投票
1 回答
740 浏览

filesystems - 内核级别的make文件中的静态链接

我创建了一个内核模块,它使用内核级函数,例如 vfs_read、write 等。这个模块有一个生成文件,可以构建这个模块来获取 .ko 文件。我想分析这个 .ko 文件的 objdump 输出。但是我观察到诸如 vfs_read 和 write 之类的内核函数没有在 .ko 文件中解析。它们只是被调用,我的猜测是它们在运行时被解析。是否可以在生成文件中进行一些更改并将所有这些函数静态链接到单个 .ko 文件中,仅出于分析目的。我尝试在编译时添加静态,但我没有帮助。任何人都可以建议这样做吗?

0 投票
1 回答
1594 浏览

boost - Windows 上的链接问题(增强)

我正在尝试编译 boost 和 mongodb。

我想要 64 位版本、共享库和到运行时的动态链接。

Boost 是用link=shared, runtime-link=shared, threading=multi(和其他一些)编译的。lib 和 dll 文件的名称如下: boost_*-vc90-mt-1_41.dll

现在 mongodb 具有默认设置:/MT(多线程静态)。链接器需要 boost 库libboost_*-vc90-mt-s-1_41.dll(注意附加的lib-s)。所以我将选项更改为/MD(多线程 dll)并且-s消失了但lib留下了。我试过了,/DBOOST_THREAD_USE_DLL /DBOOST_ALL_DYN_LINK但它没有改变。链接器是否仍在寻找静态库?

请帮忙 :)

0 投票
1 回答
1313 浏览

shared-libraries - 可以静态链接共享对象库吗?

我正在构建一个需要动态链接到我的项目的库。输出是一个 .so 文件,所以我认为我在正确的轨道上。我担心它在编译时的链接方式——通过指定它的 makefile 的位置并依赖于一堆我以前从未遇到过的宏。

我可以假设因为我正在构建一个 .so 库(而不是 .a),我实际上是在动态链接吗?或者 .so 库是否可以静态链接,在这种情况下,我需要拆分 make/config 文件以更好地了解发生了什么?

谢谢,

安德鲁

0 投票
1 回答
490 浏览

ios - 使用交叉引用多个静态库的 iOS 应用程序链接错误

我将一个 Xcode iPhone 项目拆分为多个较小的项目以进行代码重用。结构如下所示:

一切都正确编译,但一旦链接应用程序,链接器就找不到 KAL(开源日历库)库的 2 个符号。每个库都有一个交叉引用,所有档案都添加到“将二进制文件与库链接”构建阶段。

错误是:

未定义符号:
“_OBJC_CLASS_$_KalViewController”,引用自:
libA.a(AViewController.o) 中的 objc-class-ref-to-KalViewController
“_OBJC_CLASS_$_KalDate”,引用自:
libA 中的 objc-class-ref-to-KalDate .a(AViewController.o)
ld:未找到符号
collect2:ld 返回 1 个退出状态

我在 LibA 的 AViewController 中使用来自 LibZ 的一个类,而他又在使用 LibKAL 中的一个类。

PS:A 和 B 的分离只是因为不是每个构建的 App 都需要两者提供的功能。

0 投票
4 回答
14802 浏览

c - 如何在 C 中创建模块

我有一个接口,我希望能够静态链接模块。例如,我希望能够调用称为 FOO 或匹配某个原型的所有函数(尽管在单独的文件中),最终在文件中调用一个函数,而在其他文件中没有标题。不要说这是不可能的,因为我找到了一个可以做到的黑客,但我想要一个非黑客的方法。(hack 是使用 nm 来获取函数及其原型,然后我可以动态调用该函数)。另外,我知道您可以通过动态链接来做到这一点,但是,我想静态链接文件。有任何想法吗?

0 投票
2 回答
750 浏览

c++ - Snow Leopard 上 wxWidgets 的问题

我在编译 wxWidget 应用程序时遇到问题。我已经安装了最新版本的库,如下所示:

我正在尝试编译一个简单的 hello-world 示例:

但是在链接时编译失败:

这个框架可能在哪里出现问题或有人遇到过类似的问题?

谢谢。

PS 系统:雪豹(64 位)10.6.5。使用英特尔 proc,gcc 4.2。

0 投票
2 回答
1633 浏览

gcc - 编译静态库时设置较早的最低内核版本

我的发行版(Arch Linux)最近为其工具链增加了最低支持的 Linux 内核版本。我正在编译一个静态链接然后上传到 Web 服务器的 Web 应用程序,而 Web 服务器上的内核版本对于使用新工具链编译的静态库来说太旧了。(当我尝试在服务器上运行静态二进制文件时出现分段错误。)有没有办法使用 GNU 工具链(GCC、binutils、glibc)编译应用程序,从而忽略需要更新内核版本的功能?

0 投票
1 回答
492 浏览

opengl - 在 D 中链接到 libglut.a 时出现问题

我有一个可以编译的简单 openGL D 程序,但我无法将它与 libglut.a 链接。我尝试了一些不同的命令行:

所有这些都打印以下错误:

我的命令行有问题,还是其他问题?