问题标签 [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.
resources - 关于编译中链接过程的好资源
我一直在写代码,我一直认为编译的链接阶段非常简单,但是最近我不得不在应用程序中添加一个插件系统,并且我遇到了很多编译和运行时问题,由于我对这件事完全缺乏了解。我现在已经让它工作得很好,并且在这个过程中学到了很多东西,但是现在我意识到我在这个主题上还有很多东西要学,我想更多地探索这个主题。所以我想知道是否有人对整个“代码部分、符号、链接、动态/静态库......”业务的文章、博客文章或书籍有很好的指导。
我正在使用 gcc 和 ld 在 Linux 上进行开发,但我也对 M$ 的做事方式感兴趣,我渴望知识:)
谢谢!
c++ - __gxx_personality_v0 有什么用?
这是来自操作系统开发站点的二手问题,但它让我感到好奇,因为我在任何地方都找不到合适的解释。
使用 gcc 编译和链接独立 C++ 程序时,有时会出现如下链接器错误:
这显然是因为该符号是在 libstdc++ 中定义的,而独立环境中缺少该符号。解决这个问题只需要在某个地方定义这个符号:
这很好,但我不喜欢神奇地起作用的东西......所以问题是,这个符号的目的是什么?
arrays - 你如何链接两个数组?
我在一个基本的编程课上,一切都是用伪代码完成的。
我的问题是:如何链接两个数组?
我有一个列出学生姓名的一维数组,我有一个列出每个学生的前八名分数的二维数组……这一切都很好,但现在我需要按学生对数组进行排序姓名。我在网上闲逛并通读了书籍章节两次,它只简要提到了链接两个数组,但没有显示示例。
如果有任何帮助,我们正在使用冒泡排序,这是我相当熟悉的......我可以对名称进行排序,这很容易,但我不知道如何对成绩进行排序,所以他们不会出故障。
感谢您的输入!
旁注:我明白了!我最终按照 Greg Hewgill 提到的方式做了。当我对他的建议发表评论时,我开始随机输入代码行,直到我想到这个想法......它看起来并不漂亮(一个模块交换了名称,另一个交换了成绩,甚至还有第三个在多维数组中交换个别学生的成绩),但它确实似乎工作......没有办法用一种语言测试它,因为我没有编译器,也没有足够的知识将伪代码变成实际代码,如果我要下载一个,但在我打出来的纸上听起来真的很棒!
正如我在笔记中提到的,我非常感谢大家的快速和有益的洞察力,我什至没想到今晚我会得到回复,再次感谢大家的帮助!
杰弗里
gcc - 从 LD 隐藏共享对象中的符号
我有两个第三方库偶尔会导出相同的符号名称。加载可执行文件时,ld通常会选择错误的文件,结果导致我崩溃。我不能对这些库的内容做太多,所以可能有一种方法可以指导ld如何找到正确的实施方式?
操作系统 - Solaris 10,我的程序是由 autoconf/autotools/gcc 构建的,冲突的库是libclntsh(Oracle 驱动程序的一部分)和 OpenLDAP。不幸的是,我不能使用 Oracle 的 LDAP 客户端实现——它缺少 OpenLDAP 的许多功能。
编辑:链接如下:libclntsh.so->A.so->MAIN<-B.so<-libldap_r.so
linux - ld 找不到现有的库
我正在尝试在此 Debian lenny 系统上将应用程序与 g++ 链接。ld 抱怨找不到指定的库。这里的具体示例是 ImageMagick,但我在其他一些库中也遇到了类似的问题。
我用以下方式调用链接器:
ld抱怨:
但是,libmagic 存在:
我如何进一步诊断这个问题,可能出了什么问题?我在做一些完全愚蠢的事情吗?
object - ELF 和 PE 的基本链接过程如何工作
我一直对链接器的工作方式感到困惑,而且这是一个很难搜索的主题。
为了演示我的问题并为答案提供框架,我将写下到目前为止我所知道的(或认为我知道的)。我可能是非常错误的。:)
首先,每个 .cpp 文件都被构建到一个中间文件中(我相信 .o 代表 Posix/ELF 和 .obj 代表 Win/PE)。该中间文件包含由它构建的 .cpp 定义的所有符号,并说明了需要正确解析哪些外部链接。作为对此的扩展,Posix 系统允许您将 .o 文件合并到 .a 文件中(这似乎除了合并之外没有任何作用?这是什么命令?)。.lib 是 Posix .a 文件的 Win/PE 等价物吗?
接下来,将中间文件链接在一起,解决外部依赖关系,并获得可执行文件。我错过了任何步骤吗?
谢谢!
c - 您可以静态编译 cygwin 应用程序吗?
cygwin 是否允许静态编译的二进制文件?这将防止 cygwin1.dll 出现在目标机器的 PATH 上。
c++ - 错误 LNK2005:_DllMain@12 已在 MSVCRT.lib 中定义
我收到此链接器错误。
mfcs80.lib(dllmodul.obj):错误 LNK2005:_DllMain@12 已在 MSVCRT.lib(dllmain.obj) 中定义
请告诉我消除此错误的正确方法。我在微软支持网站上阅读了关于这个错误的解决方案,但它并没有太大帮助。
我正在使用带有平台 SDK 的 VS 2005
visual-studio-2008 - Visual Studio 2008 C++ 问题
我正在尝试编写一个程序来计算二次公式。当我运行它时,我收到 2 条错误消息:
这是在我从...更改最后一行代码之后:
至
在进行该更改之前,我遇到了 2 个编译器错误:C2563 和 C2568。在朋友的电脑上,该程序运行良好。
我能做些什么来解决这个问题?
delphi - 如何重命名exe文件
假设我有一个通用的垂直市场应用程序,我想将它打包为两个单独的程序 aaa.exe 和 bbb.exe。有没有办法使用 Delphi 链接器创建一个与 DPR 名称不同的 EXE/DLL 文件?
我不能只重命名文件,因为我收到此错误
现在一般来说,我可以重命名一个可执行文件,但不能重命名这个。感谢您的评论指出我在这方面的愚蠢。有一个问题,显然不是一个正常的问题,甚至不一定与Delphi有关。
我正在使用 Delphi 7(如果在 2007/2009 年可能会很棒,因为我需要更多的升级素材)