问题标签 [linker]

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 投票
27 回答
458870 浏览

visual-c++ - 为什么我在 Visual Studio 中编译 C++ 项目时会出现致命错误“LNK1104:无法打开文件 'C:\Program.obj'”?

我在 Visual Studio 2008 中创建了一个新的 C++ 项目。尚未编写任何代码;只有项目设置已更改。

当我编译项目时,我收到以下致命错误:

致命错误 LNK1104:无法打开文件 'C:\Program.obj'

0 投票
1 回答
5395 浏览

visual-studio - Visual Studios Link.exe 错误:“额外操作数”

我们的构建过程使用 Visual Studios 2003 link.exe 进行链接。在一台机器上,我们看到以下错误:

它似乎使用与其他机器相同版本的视觉工作室。有没有人遇到过这个问题?

0 投票
5 回答
167982 浏览

linux - linux动态链接器的“没有可用的版本信息”错误是什么意思?

在我们的产品中,我们发布了一些动态链接到“libpam”等系统库的 linux 二进制文件。在某些客户系统上,当程序运行时,我们在 stderr 上收到以下错误:

应用程序运行良好并执行动态库中的代码。所以这不是一个致命的错误,它实际上只是一个警告。

我认为当系统安装的库缺少我们的可执行文件期望的东西时,这是来自动态链接器的错误。我对动态链接过程的内部了解不多......并且谷歌搜索该主题并没有多大帮助。:(

有谁知道是什么导致了这个错误?...我如何诊断原因?...以及我们如何更改可执行文件以避免此问题?

更新:客户升级到最新版本的debian“测试”,出现同样的错误。所以它不是一个过时的 libpam 库。我想我想了解链接器在抱怨什么?我如何调查根本原因等?

0 投票
10 回答
100140 浏览

python - 将Python编译成机器码可行吗?

将 Python(可能通过中间 C 表示)编译成机器代码有多可行?

据推测,它需要链接到 Python 运行时库,并且 Python 标准库的任何部分本身就是 Python 也需要编译(和链接)。

此外,如果您想对表达式进行动态评估,则需要捆绑 Python 解释器,但也许不允许这样做的 Python 子集仍然有用。

它会提供任何速度和/或内存使用优势吗?大概 Python 解释器的启动时间将被消除(尽管共享库仍需要在启动时加载)。

0 投票
2 回答
1959 浏览

linux - #defines 在链接器脚本中

对于嵌入式系统,我需要在固定地址放置一些数据结构,以便单独的控制 CPU 可以在已知位置访问它们。我正在使用嵌入式目标的链接器脚本来完成此操作,以及控制 CPU 的相同地址的#defines。

令我困扰的是,这些地址常量是在两个地方定义的,链接描述文件和头文件。我想只有一个。到目前为止,我想出的最佳解决方案是让 Makefile 在链接器脚本上运行 cpp,允许它#include 相同的标头。

有没有更好的方法来实现这一点?ld 是否有一些鲜为人知的选项或链接器脚本的命名约定,它将自动通过 cpp 运行它?

0 投票
3 回答
2249 浏览

c++ - Unable to link to shared library

I'm building a shared library with g++ 3.3.4. I cannot link to the library because I am getting

Which c++filt describes as

I thought this might have come from using hash_map, but I've taken that all out and switched to regular std::map. I am using g++ to do the linking, which is including -lstdc++.

Does anyone know what class would be instantiating this template? Or even better, which library I need to be linking to?

EDIT: After further review, it appears adding the -frepo flag when compiling has caused this, unfortunately that flag is working around gcc3.3 bug.

0 投票
6 回答
31768 浏览

gcc - 链接器问题 - 未定义的引用

我的编译器有问题,告诉我有一个“未定义的引用”我想在库中使用的函数。让我分享一些关于这个问题的信息:

  • 我正在使用 gcc for C 进行交叉编译。
  • 我正在调用一个库函数,该函数通过包含的标头访问,该标头包含另一个包含原型的标头。
  • 我已经使用 -I 包含了 headers 目录,并且我确定它已被找到。
  • 我首先创建 .o 文件,然后将它们链接到单独的命令中。

所以我的想法是这可能是我包含库文件的顺序,但我不确定订购它们的正确方法是什么。我尝试在 .o 文件之前和之后包含 headers 文件夹。

一些建议会很棒,也许还有对链接器如何做事的解释。

谢谢!


对答案的回应

  • 没有 .a 库文件,只有 .h 和 .c 在库中,所以 -l 不合适
  • 我对库文件的理解是它只是头文件和源文件的集合,但也许它是从源创建的 .o 文件的集合?!
  • 没有创建库目标文件,也许应该有?是的,似乎我不明白包含和库之间的区别......我会努力的:-)

感谢所有的回复!我学到了很多关于图书馆的知识。我想把所有的回复都作为接受的答案:-)

0 投票
10 回答
843 浏览

c++ - 为什么我的引用传递的参数没有在函数内修改?

我在静态库中有一个 C 函数,我们称它为 A,具有以下接口:

这个函数将改变 y 和 z 的值(这是肯定的)。我在动态 C++ 库中使用它,使用 extern "C"。

现在,这让我感到震惊:

  • y 设置正确,z 没有改变。我的意思是,如果两者都使用(指向)值 666 进行初始化,则 y 指向的值将在调用后发生变化,但不会更改 z 指向的值(仍为 666)。
  • 当从 C 二进制文件调用时,此函数可以无缝工作(修改 z 指向的值)。
  • 如果我创建一个具有相同原型的函数的虚拟 C 库,并在我的动态 C++ 库中使用它,它工作得很好。如果我重新使用相同的变量来调用 A(..),我会得到与以前相同的结果,z 不会改变。

我认为以上几点表明我的变量声明并不是一个愚蠢的错误。

我显然被卡住了,我无法更改 C 库。您对可能是什么问题有任何线索吗?我正在考虑 C/C++ 接口上的一个问题,例如 char* 的解释方式。

编辑:我终于发现了问题所在。请看下面我的回答。

0 投票
6 回答
1991 浏览

visual-studio-2008 - 奇怪的 MFC / VC++ 链接器错误 (std::list已经定义)

我收到了一条非常奇怪的错误消息,仅在我将以下行添加到我的项目时才会出现:

值得注意的是,它不一定是 std::list,它可以是 std::vector 或我假设的任何其他 STL 容器。

这是错误消息:

错误 1 ​​错误 LNK2005:“公共:__thiscall std::list

::list >(void)" (??0?$list@VCRect@@V?$allocator@VCRect@@@std@@@std@@QAE@XZ) 已在 SomeLowLevelLibrary.lib 中定义

错误消息中引用的低级库不知道我正在构建的项目,它只有核心的低级功能,不处理高级 MFC GUI。

如果我将代码行更改为:

但我不想为了它而破解它。

此外,无论我是在堆栈还是堆上创建变量,我仍然会得到同样的错误。

有没有人对此有任何想法?我在 Vista Enterprise 上使用 Microsoft Visual Studio 2008 SP1。

编辑:上面的链接器错误是针对 std::list<> 构造函数的,我也收到析构函数、_Nextnode 和 clear 函数的错误。

编辑:在项目的其他文件中,std::vector 不会链接,在其他文件中它可能是 std::list。我无法弄清楚为什么有些容器可以工作,而有些则不能。MFC 链接在两个库中都是静态的。在低级库中,我们有 1 个继承自 std::list 的类。

编辑:低级库没有任何从 CRect 继承的类,但它确实使用了 STL。

0 投票
4 回答
28637 浏览

windows - 在 Windows (GCC) 上增加堆栈大小

有没有办法在使用 GCC 的编译/链接时增加 Windows 应用程序的堆栈大小?