linker相关内容
尝试从 zeromq 教程编译示例 hello_world.c:http://zguide.zeromq.org/page:all#Ask-and-Ye-应收很确定我已经在 OSX Mountain Lion 中安装了所有东西. clang -Wall hwserver.c -o hwserver 给我一个错误: 架构 x86_64 的未定义符号:“_zmq_bind",引用自:hwse
..
我正在尝试将包含特殊字符串 $ORIGIN 的 RPATH 链接到使用 GCC 和 Code::Blocks IDE 构建的可执行文件中.我已经指定了 -Wl,-R$ORIGIN 在项目的链接器选项中,但到 GCC 的命令行输出是错误的(为了清楚起见,已删除): g++ -Wl,-R 为 Code::Blocks 指定此参数的正确方法是什么? 解决方案 决定制作令牌 $ORIGIN
..
我使用这种方法创建了 iOS 框架项目:https://github.com/jverkoey/iOS-框架 工作得非常整洁,但我有点困惑如何包含我的框架工作所需的库/框架,特别是如何做到这一点,以便万一使用我的框架的 3rd 方客户端应用程序可以包括这些库也没有冲突. 假设我的框架代码需要这两件事: FacebookSDK.framework libFlurry.a 第
..
..
我正在尝试使用 ld 直接链接以隔离构建问题. 当我包含 /usr/lib/gcc/x86_64-linux-gnu/4.7/libstdc++.so 时,我遇到了一些问题: ac-aaa.o:在函数“__static_initialization_and_destruction_0"中:/usr/include/c++/4.7/iostream:75: 未定义对“__dso_handle
..
我正在开发一个嵌入式项目,该项目目前在 Linux 和 uClibc 中使用 C.我们有兴趣将其移至 C++,但我不希望与 libstdc++ 中的链接相关的开销.我的印象是,如果我们不使用 STL 中的任何东西,例如 iostream 或 vector,这是可能的. 如何在不链接到 libstdc++ 的情况下指导 g++ 编译? 解决方案 编译时,使用g++ -c 只编译.然后对
..
为什么有些静态库 (lib*.a) 可以像链接共享库 (lib*.so) 一样链接(ld -l 开关),而有些则不能? 我一直被教导所有的库,不管是不是静态的,都可以用 -l... 链接,但是到目前为止我遇到了一个库(GLFW),它除了喷出“未定义的引用"链接之外什么也没做如果我尝试以这种方式链接它,则会出错. 根据this question上的回复,“正确"的方式链接静态库是直接包含
..
我刚刚在 Ubuntu 上构建了一个共享库,当我尝试使用该功能时,加载该库的应用程序报告找不到 'xxx' 符号. 我想检查(即列出)我的库导出的函数,以便进一步调查此问题. 相关详情: 操作系统:Ubuntu 9.10编译器:gcc 4.4.1链接器:GNU ld 2.20 解决方案 试试 nm 实用程序. GNU nm 列出对象中的符号文件 objfile...
..
我正在尝试使用 ld 而不是 g++ 链接 C++ 的输出.我这样做只是为了学习如何做,而不是出于实际目的,所以请不要建议只用 g++ 来做. 看着这个问题,这个人当他们运行 ld 命令时得到同样的错误: $ ld test.o -o test.outld:警告:找不到入口符号_start;默认为 00000000004000e8test.o:在函数“main"中:test.cpp:(.t
..
我正在使用 MinGW 在 Windows 上构建我的应用程序.编译链接时在命令行中加入“-mwindows"选项,实现Win32 API函数. 更具体地说:在没有“-mwindows"的情况下调用 MinGW 的 GCC 时: c:\>g++ -c main.cppc:\>g++ -o main.exe main.o 上面2个命令行后面的'main.exe'会用控制台运行,Win32
..
问题 我希望将目标文件注入到现有的二进制文件中.作为一个具体的例子,考虑一个源 Hello.c: #include 诠释主要(无效){返回 EXIT_SUCCESS;} 可以通过gcc -std=gnu99 -Wall Hello.c -o Hello编译成名为Hello的可执行文件.此外,现在考虑 Embed.c: func1(void){} 一个目标文件Emb
..
假设您使用包含多个工具和库的代码库,并且您希望在此类代码库中移植(或重新生成)某些组件,但有关符号在各个库中的位置的任何线索要么丢失,要么需要很长时间才能找到查看代码本身(是的,改进的文档可以避免此类问题,但要求很高).发现在哪个库中可以找到代码中使用的符号的最快方法是什么? 解决方案 假设是一个 linux 机器,nm 工具会在库文件中列出名称. 它可以用来做一个广泛的搜索,如下:
..
我经常听到“链接到库"这个词.我是编译器和链接的新手,所以我想更多地了解这一点. 链接库是什么意思,什么时候不这样做会导致问题? 解决方案 库是包含已编译代码的“存档".通常,您希望使用现成的库来使用一些您不想自己实现的功能(例如解码 JPEG、解析 XML、为您提供 GUI 小部件,等等). 通常在 C 和 C++ 中使用库是这样的:您 #include 包含函数/类的库的一
..
我最近在 GNU ld 中发现了链接器选项“-Bsymbolic-functions": -Bsymbolic创建共享库时,将对全局符号的引用绑定到共享库中的定义(如果有).正常情况下是可以的对于链接到共享库的程序以覆盖定义在共享库中.此选项仅在支持共享库的 ELF 平台上有意义.-Bsymbolic-functions创建共享库时,将引用绑定到全局函数符号到共享库中的定义(如果有).此选项仅在
..
takeaway.o:在函数“takeaway"中:项目:145:未定义对“外卖 vtable"的引用项目:145:未定义对“外卖 vtable"的引用takeaway.o:在函数“~takeaway"中:项目:151:未定义对“外卖 vtable"的引用项目:151:未定义对“外卖 vtable"的引用takeaway.o:在函数“gameCore"中:project.h:109: 未定义对 `
..
我的 Haskell 项目花费大量时间在 Linking dist/build/myapp/myapp ... 以及在执行 TemplateHaskell 代码时加载共享库. 我怀疑这是因为 ld 很慢. 如何通过切换到 gold 链接器来缩短链接时间? 解决方案 使用 gold 链接速度提高 3 倍 自 GHC 7.8 起,您可以区分 GHC 和 cabal(在运行时无需
..
我已经广泛搜索了如何做到这一点,但未能找到答案. 我的内存布局如下: 假地址 |部分0 |文本7 |搬迁15 |bss23 |堆 在堆栈的末尾,我放置了堆.它长大了,堆栈是我正在使用的 ARM 芯片的完整降序堆栈. 现在,我要做的是在我的 RAM 内存中放置一个单独的部分,我们称之为 .persist.我希望它位于 RAM 的最末端,并且我想将它编程到我的链接器脚本中.但是,这个
..
在我的链接描述文件中,我定义了两个符号 定义符号_region_RAM_start__ = 0xC0000000;定义符号_region_RAM_end__ = 0xC00fffff; 然后我将它们导出,如下所示 导出符号_region_RAM_start__;导出符号_region_RAM_end__; 从应用程序代码中,我尝试访问这些符号 extern const unsigned
..
Google 的 C++ 测试框架有两个输出库:一个是 gtest.lib,另一个是 gtest_main.lib.根据 Nik Reiman 的回答 如何使用 Visual Studio 设置 gtest,我们应该链接到 gtest_main.lib,但我正在链接到 gtest.lib,并且我的示例测试用例运行良好. 这两个库有什么区别,我链接到哪个库有关系吗? 解决方案 唯一合理
..
..