linker相关内容

如何使用 $ORIGIN 获取 RPATH 以在 Code::Blocks GCC 上工作?

我正在尝试将包含特殊字符串 $ORIGIN 的 RPATH 链接到使用 GCC 和 Code::Blocks IDE 构建的可执行文件中.我已经指定了 -Wl,-R$ORIGIN 在项目的链接器选项中,但到 GCC 的命令行输出是错误的(为了清楚起见,已删除): g++ -Wl,-R 为 Code::Blocks 指定此参数的正确方法是什么? 解决方案 决定制作令牌 $ORIGIN ..
发布时间:2022-01-11 15:50:21 其他开发

处理 iOS 框架项目的依赖项

我使用这种方法创建了 iOS 框架项目:https://github.com/jverkoey/iOS-框架 工作得非常整洁,但我有点困惑如何包含我的框架工作所需的库/框架,特别是如何做到这一点,以便万一使用我的框架的 3rd 方客户端应用程序可以包括这些库也没有冲突. 假设我的框架代码需要这两件事: FacebookSDK.framework libFlurry.a 第 ..
发布时间:2022-01-11 15:50:13 移动开发

避免链接到 libstdc++

我正在开发一个嵌入式项目,该项目目前在 Linux 和 uClibc 中使用 C.我们有兴趣将其移至 C++,但我不希望与 libstdc++ 中的链接相关的开销.我的印象是,如果我们不使用 STL 中的任何东西,例如 iostream 或 vector,这是可能的. 如何在不链接到 libstdc++ 的情况下指导 g++ 编译? 解决方案 编译时,使用g++ -c 只编译.然后对 ..
发布时间:2022-01-11 15:49:51 服务器开发

使用 GCC 链接静态库的正确方法

为什么有些静态库 (lib*.a) 可以像链接共享库 (lib*.so) 一样链接(ld -l 开关),而有些则不能? 我一直被教导所有的库,不管是不是静态的,都可以用 -l... 链接,但是到目前为止我遇到了一个库(GLFW),它除了喷出“未定义的引用"链接之外什么也没做如果我尝试以这种方式链接它,则会出错. 根据this question上的回复,“正确"的方式链接静态库是直接包含 ..
发布时间:2022-01-11 15:49:42 其他开发

如何在 Ubuntu 的共享库中列出导出的函数

我刚刚在 Ubuntu 上构建了一个共享库,当我尝试使用该功能时,加载该库的应用程序报告找不到 'xxx' 符号. 我想检查(即列出)我的库导出的函数,以便进一步调查此问题. 相关详情: 操作系统:Ubuntu 9.10编译器:gcc 4.4.1链接器:GNU ld 2.20 解决方案 试试 nm 实用程序. GNU nm 列出对象中的符号文件 objfile... ..
发布时间:2022-01-11 15:49:34 C/C++开发

如何将 C++ 目标文件与 ld 链接

我正在尝试使用 ld 而不是 g++ 链接 C++ 的输出.我这样做只是为了学习如何做,而不是出于实际目的,所以请不要建议只用 g++ 来做. 看着这个问题,这个人当他们运行 ld 命令时得到同样的错误: $ ld test.o -o test.outld:警告:找不到入口符号_start;默认为 00000000004000e8test.o:在函数“main"中:test.cpp:(.t ..
发布时间:2022-01-11 15:49:25 C/C++开发

MinGW,使用控制台构建 GUI 应用程序

我正在使用 MinGW 在 Windows 上构建我的应用程序.编译链接时在命令行中加入“-mwindows"选项,实现Win32 API函数. 更具体地说:在没有“-mwindows"的情况下调用 MinGW 的 GCC 时: c:\>g++ -c main.cppc:\>g++ -o main.exe main.o 上面2个命令行后面的'main.exe'会用控制台运行,Win32 ..
发布时间:2022-01-11 15:49:16 其他开发

如何找到在静态库中定义符号的位置

假设您使用包含多个工具和库的代码库,并且您希望在此类代码库中移植(或重新生成)某些组件,但有关符号在各个库中的位置的任何线索要么丢失,要么需要很长时间才能找到查看代码本身(是的,改进的文档可以避免此类问题,但要求很高).发现在哪个库中可以找到代码中使用的符号的最快方法是什么? 解决方案 假设是一个 linux 机器,nm 工具会在库文件中列出名称. 它可以用来做一个广泛的搜索,如下: ..
发布时间:2022-01-11 15:49:00 C/C++开发

链接到某物是什么意思?

我经常听到“链接到库"这个词.我是编译器和链接的新手,所以我想更多地了解这一点. 链接库是什么意思,什么时候不这样做会导致问题? 解决方案 库是包含已编译代码的“存档".通常,您希望使用现成的库来使用一些您不想自己实现的功能(例如解码 JPEG、解析 XML、为您提供 GUI 小部件,等等). 通常在 C 和 C++ 中使用库是这样的:您 #include 包含函数/类的库的一 ..
发布时间:2022-01-11 15:48:49 C/C++开发

使用 -Bsymbolic-functions 有缺点吗?

我最近在 GNU ld 中发现了链接器选项“-Bsymbolic-functions": -Bsymbolic创建共享库时,将对全局符号的引用绑定到共享库中的定义(如果有).正常情况下是可以的对于链接到共享库的程序以覆盖定义在共享库中.此选项仅在支持共享库的 ELF 平台上有意义.-Bsymbolic-functions创建共享库时,将引用绑定到全局函数符号到共享库中的定义(如果有).此选项仅在 ..
发布时间:2022-01-11 15:48:33 其他开发

未定义对 'vtable for xxx' 的引用

takeaway.o:在函数“takeaway"中:项目:145:未定义对“外卖 vtable"的引用项目:145:未定义对“外卖 vtable"的引用takeaway.o:在函数“~takeaway"中:项目:151:未定义对“外卖 vtable"的引用项目:151:未定义对“外卖 vtable"的引用takeaway.o:在函数“gameCore"中:project.h:109: 未定义对 ` ..
发布时间:2022-01-11 15:48:26 C/C++开发

链接器脚本 - 在内存区域的末尾放置一个节

我已经广泛搜索了如何做到这一点,但未能找到答案. 我的内存布局如下: 假地址 |部分0 |文本7 |搬迁15 |bss23 |堆 在堆栈的末尾,我放置了堆.它长大了,堆栈是我正在使用的 ARM 芯片的完整降序堆栈. 现在,我要做的是在我的 RAM 内存中放置一个单独的部分,我们称之为 .persist.我希望它位于 RAM 的最末端,并且我想将它编程到我的链接器脚本中.但是,这个 ..
发布时间:2022-01-11 15:48:00 C/C++开发

应用程序在链接描述文件中定义的访问符号

在我的链接描述文件中,我定义了两个符号 定义符号_region_RAM_start__ = 0xC0000000;定义符号_region_RAM_end__ = 0xC00fffff; 然后我将它们导出,如下所示 导出符号_region_RAM_start__;导出符号_region_RAM_end__; 从应用程序代码中,我尝试访问这些符号 extern const unsigned ..
发布时间:2022-01-11 15:47:52 其他开发

gtest.lib 和 gtest_main.lib 有什么区别?

Google 的 C++ 测试框架有两个输出库:一个是 gtest.lib,另一个是 gtest_main.lib.根据 Nik Reiman 的回答 如何使用 Visual Studio 设置 gtest,我们应该链接到 gtest_main.lib,但我正在链接到 gtest.lib,并且我的示例测试用例运行良好. 这两个库有什么区别,我链接到哪个库有关系吗? 解决方案 唯一合理 ..
发布时间:2022-01-11 15:47:44 C/C++开发