linker相关内容

使用 gcc 链接共享库

我在 windows 目标上使用 Real View 编译器工具 (RVCT 3.2) 创建了一个共享库 (*.so).然后我尝试在 linux 系统上使用 gcc 将此 *.so 文件与我的应用程序链接. 将这个共享库链接到我的应用程序 linux 的 gcc 选项是什么? 我的问题是,是 -shared 选项,用作 gcc -shared myfile.so ...,用于创建 ..
发布时间:2022-01-11 15:30:46 其他开发

编译后的 C++ 类是什么样的?

有了汇编指令和 C 程序的一些背景知识,我可以想象编译函数的样子,但有趣的是,我从来没有仔细考虑过编译后的 C++ 类的样子. bash$ cat class.cpp#include类基础{诠释我;浮动 f;};bash$ g++ -c 类.cpp 我跑了: bash$objdump -d class.obash$readelf -a 类.o 但我得到的东西我很难理解. ..
发布时间:2022-01-11 15:30:38 C/C++开发

C++ - LNK2019 错误未解析的外部符号 [模板类的构造函数和析构函数] 在函数 _main 中引用

[[UPDATE]] -> 如果我 #include "Queue.cpp" 在我的 program.cpp 中,它工作得很好.这应该没有必要吧? 大家好——我正在使用 Visual Studio 2010,但在链接快速而肮脏的队列实现时遇到了问题.我从一个 empty Win32 控制台应用程序开始,所有文件都存在于项目中.对于冗长,这里是复制我的错误的完整代码.我意识到某些代码实际上可能 ..
发布时间:2022-01-11 15:30:29 C/C++开发

为什么 ELF 入口点 0x8048000 不能用“ld -e"更改?选项?

跟进为什么ELF执行入口点虚拟地址是0x80xxxxx而不是0x0形式的0x0? 和 为什么虚拟内存地址为linux 二进制文件从 0x8048000 开始?,为什么我不能让 ld 使用与 ld -e 的默认入口点不同的入口点? 如果这样做,我会得到一个返回代码为 139 的 segmentation fault,即使对于靠近默认入口点的地址也是如此.为什么? 编辑: 我会让问题 ..
发布时间:2022-01-11 15:30:02 其他开发

Xcode 一直在错误的路径上搜索 dylib

这是我的错误: dyld:库未加载:/usr/local/lib/libofa.0.dylib引用自:/sers/david/Projekte/Test/build/Debug/Test.app/Contents/MacOS/Test原因:找不到图片 我做了一些研究并使用 install_name_tool 更改了 dylib 内的路径: davids-macbook:Test david$ ..
发布时间:2022-01-11 15:29:54 其他开发

链接到多个 .obj 以对控制台应用程序进行单元测试

有一些问题,希望我能找到一些帮助. 我在 Visual Studio 2012 的同一个解决方案下有两个项目 一些背景知识,我创建了一个控制台应用程序,该应用程序输出为 .exe,这是在一个项目中. 在另一个项目中,我设置了 google 测试以在控制台应用程序项目中的类上运行单元测试. 如果我能够将主项目编译为静态库,则不会出现问题,因为可以链接到 .lib,但这不是一个 ..
发布时间:2022-01-11 15:29:33 C/C++开发

将多个 C 源文件编译成唯一的目标文件

我有一些 C 源文件,我正在使用 gcc.我基本上想编译所有这些并创建一个目标文件.当我尝试时: gcc -c src1.c src2.c src3.c -o final.o 我明白了: gcc: 不能用 -c 指定 -o 或用多个文件指定 -S 如果我尝试: gcc -c src1.c src2.c src3.c 我得到三个不同的目标文件.如何告诉 gcc 编译所有文件以返回一个目标 ..
发布时间:2022-01-11 15:29:10 其他开发

将共享库与静态库链接:静态库的编译方式必须与应用程序链接它的方式不同吗?

至少在 Linux 和 Solaris 上,静态库实际上只是一堆已编译的 .o 文件,它们被扔进一个大文件中.编译静态库时,通常会省略 -fpic 标志,因此生成的代码是位置相关的. 现在假设我的静态库是 B.我已经构建了它并得到了生成的 .a 文件,它实际上只是所有位置相关的 .o 文件的一个整体.现在我有一个我想构建的共享库A,我希望它静态链接B.当我构建A时,我自然会使用-fpic标志 ..
发布时间:2022-01-11 15:28:53 其他开发

rpath=$ORIGIN 没有想要的效果?

我有一个二进制“CeeloPartyServer";需要在运行时在 FreeBSD 机器上找到 libFoundation.so.它们都在同一个目录中.我使用链接器标志 -rpath=$ORIGIN 编译(在另一个平台上,使用交叉编译器)CeeloPartyServer. >readelf -d CeeloPartyServer |grep -i rpath0x0000000f (RPATH) ..
发布时间:2022-01-11 15:28:25 其他开发

链接库的多个版本

我有一个应用程序与第三方供应商 VENDOR1 的库 libfoo 的版本 X 静态链接.它还与来自不同第三方供应商 VENDOR2 的动态(共享)库 libbar 链接,该库静态链接来自 VENDOR1 的 libfoo 版本 Y. 所以 libbar.so 包含版本 Y 的 libfoo.a 而我的可执行文件包含版本 X 的 libfoo.alibbar 仅在内部使用 libfoo,并且 ..
发布时间:2022-01-11 15:28:19 服务器开发

为什么链接器终止于我?当我建立 CLang

我使用的是opensuse,当你点击vmware时,mono的网站上的具体变种 我收到此错误.有谁知道我该如何解决它? make[4]: 进入目录`/home/rupert/Desktop/llvm/tools/clang/tools/driver'llvm[4]:链接 Debug+Asserts 可执行文件collect2: ld 以信号 9 [Killed] 终止make[4]: ** ..
发布时间:2022-01-11 15:28:05 其他开发

制作小型haskell可执行文件?

有什么好的方法可以制作小型的 haskell 可执行文件吗?使用 ghc6,一个简单的 hello world 程序似乎达到了大约 370kB(剥离前为 523kB).C 中的 Hello world 大约为 4kB(剥离前为 9kB). 解决方案 用GHC的开发分支(有谁知道具体是在哪个版本添加的?): $ ghc -o hello hello.hs$ strip -p --strip ..
发布时间:2022-01-11 15:27:58 其他开发

加载时动态链接和运行时动态链接之间的区别

将程序加载到内存时,加载时动态链接和运行时动态链接有什么区别? 解决方案 加载时链接是指可执行文件(或其他库)引用的库中的符号在可执行文件/库加载到内存时被处理,通过操作系统. 运行时链接是当您使用操作系统提供的 API 或通过库在需要时加载 DLL 或 DSO,然后执行符号解析. 我比 Windows DLL 更了解 Linux DSO,但原理应该是相同的..NET 库可能会 ..
发布时间:2022-01-11 15:27:41 其他开发

函数上的 C++ extern 关键字.为什么不只包含头文件?

如果我理解正确,这意味着 extern void foo(); 函数 foo 是在另一个翻译单元中声明的. 1) 为什么不直接#include 声明该函数的标头? 2) 链接器如何知道在链接时到哪里寻找函数? 编辑:也许我应该澄清一下,上面的声明之后是使用函数 foo(); 在这个翻译单元中从未定义过. 解决方案 1) 可能没有头文件.但是是的,一般来说,对于大型 ..
发布时间:2022-01-11 15:27:24 C/C++开发

Linux 上的 C++ 开发 - 我从哪里开始?

我决定放弃我的 Windows 安装,现在将 Debian 作为我的默认操作系统运行.我一直在 Windows 中进行编码,特别是使用 Visual Studio.我目前正在尝试习惯在 linux 下编译我的代码. 虽然我还有很多文档要阅读,而且不要指望你们让我觉得它太容易了,但如果能得到一些关于从哪里开始的指示仍然会很好.我有一些具体问题,但请随时提出/推荐有关该主题的任何其他内容. ..
发布时间:2022-01-11 15:27:13 服务器开发

gcc 调试符号(-g 标志)与链接器的 -rdynamic 选项

glibc 提供 backtrace() 和 backtrace_symbols() 来获取正在运行的程序的堆栈跟踪.但要使其正常工作,必须使用链接器的 -rdynamic 标志构建程序. 传递给 gcc 的 -g 标志与链接器的 -rdynamic 标志有什么区别?对于示例代码,我做了 readelf 来比较输出.-rdynamic 似乎在 Symbol table '.dynsym' 下 ..
发布时间:2022-01-11 15:27:04 服务器开发