binutils相关内容
如果我想用-flto编译我的项目,用--enable-gold构建gcc是否足够?还是我还需要构建gold并用它替换ld?我还需要其他标志吗?即我正在这样做 gcc -flto one.c two.c 解决方案 根据 https://gcc.gnu.org/wiki/LinkTimeOptimization#Requirements , 尽管名称为"链接时间",但LTO 不需要使
..
GNU ld(链接程序脚本)手册但是,这样做很容易出错,并且会尝试(错误地)尝试访问链接程序脚本变量的 value 错误而不是其地址,因为这有点深奥.手册(上面的链接)说: 这意味着您无法访问 链接脚本定义的符号的值-它没有值-您所能做的就是访问链接脚本定义的符号的地址. 因此,当您在源代码中使用链接器脚本定义的符号时,应始终使用符号的地址,并且切勿尝试使用其值. 问题:因此,如
..
在Macbook Pro上编译本来很好的 Contiki OS 时,我遇到很多麻烦(与Mac OS X 10.6). Contiki实际上使用了许多特定于GNU的功能和GCC,AR,LD等选项.因此,我通过macports安装了这些实用程序,但是看起来"port install binutils"没有安装GNU ld,是吗? 所以,问题是,如何在Mac上获取GNU ld?是否有一种简单的替代
..
首先让我解释一下存根共享库的含义:可用于链接的共享库(带有真实库提供的特定接口),但不包含实际代码(因此没有功能) ). 与头文件一起,它提供了针对库进行开发所需的一切. 存根可以允许在没有可用代码的情况下链接到某个库,但是出于兼容性考虑,链接到某个库的存根可能很有用.例如,请参见在Linux中使用了存根用于标准库.为什么需要存根? 理想情况下,我需要的是一种从符号映射文件生成虚
..
示例C代码: / p> typedef struct _B { A aa; double b; char c [LEN]; int d; char * a_ptr [10]; } B; B this_b; 如果我用 gcc -g 和 gdb a.out 之后, gdb 确切地知道什么和哪里 a_ptr pre $(gdb)p&(
..
#define link_warning(symbol,msg)\\ glibc使用以下“技巧”生成链接警告。 \\ __make_section_unallocated(“.gnu.warning。”#symbol)\ static const char __evoke_link_warning _ ## symbol [] \ __attribute__((used,sectio
..
我试图在Mac OS X上构建用于生成MIPS代码的binutils。 我发现这个网站( http://www.theairportwiki.com/index.php/Building_a_cross_compile_of_GCC_for_MIPS_on_OS_X )from 如何在Mac OS X主机上为MIPS构建GCC 4.8.x目标,然后按照说明操作。 我从brew安装gcc
..
我无法将使用gcc 3.2.3的共享库链接到binutils 2.18。当我尝试链接库时,出现以下错误: .gnu.linkonce.t _...在章节中引用.rodata:在放弃的.gnu节中定义。 linkonce.t ... 我已经做了相当多的谷歌搜索,大多数地方似乎表明它是一个回归引入binutils 2.17和更高版本固定在2.18.50,但我很好奇,如果有人知道是否有任何特
..
我试图在运行(10.9)x86_64的Mac OS X主机上为MIPS目标平台构建GCC / binutils。我已经下载了最新版本的binutils和GCC,据我所知,我也通过自制软件安装了GCC 4.8.2。 然而,到目前为止,我一直没有成功在OS X主机上建立GCC / binutils for MIPS arch。 我尝试设置CC环境变量来指向通过自制程序安装的gcc版本,但是
..
我将现有的系统从Windows移植到Linux。该构建包含多个静态库。我遇到了一个链接错误,其中一个符号(在libA中定义)无法在libB的对象中找到。链接器行看起来像 g ++ test_obj.o -lA -lB -o test 当然问题因为在链接器发现它需要libA中的符号时,它已经传递了它,并且不会重新扫描,所以即使该符号存在,也只是出错。 我最初的想法当然是简单地将链接
..
在解析动态重定位时,符号查找的搜索顺序是什么? 解析共享库的符号时,加载器首先搜索'main executable'让主要的可执行文件覆盖定义...)或什么?根据我的理解,每个可执行文件都有自己的“可执行文件”查找范围“: 主要的可执行文件通常是”全局“查找范围中的第一个对象。这意味着主可执行文件中定义的符号会覆盖依赖共享库中的符号。使用 LD_PRELOAD 工具添加的共享对象被添加
..
考虑hello world C程序: hello.c : #include“stdio.h” int main() { printf(“Hello,World!\\\ ”) ; } 如果我打电话: $ gcc -c hello.c -o hello.o 它会产生一个ELF可重定位文件 hello.o 如果我然后打电话:
..
根据 gcc构建说明,您可以在构建gcc的同时构建binutils(as以及gmp,mpc等)。 以下是该网页所说的内容: 如果您还打算构建binutils (要么升级现有的 安装,要么用来代替操作系统的相应工具 ), 将binutils分发解压缩 或者在同一个目录中,或者 分开。在后一种情况下,将 符号链接添加到任何 组件中,您打算在编译器旁边创建 的binutil
..
在为本地平台开发时,我可以使用ldd列出所有共享库(.so文件),我构建的二进制可执行文件将在启动时尝试加载。但是在交叉编译时,我不知道如何获得相同的信息。 ldd 不是普通的binutils工具,例如 strip 或 ar gcc 一起构建,用于交叉编译,相反,它是一个神秘的shell脚本,显然只能在本地平台上运行。 因此,使用跨目标binutils工具,是否有任何方法可以获得外部二进制文
..
-l选项告诉链接器在标准目录中搜索库。 使用-L,我们可以指定我们自己的库目录进行搜索。 问题:-L选项的顺序顺序是否也很重要它为-l wrt链接器吗? 此链接: http://gcc.gnu.org/onlinedocs/gcc/Link-Options.html 并没有多说关于-L的序列。 编辑 另外, 命令中指定的目录在默认 目录之前搜索 行 来自手册页
..
我有一些使用基于ARM Cortex M0的微控制器运行的GCC固件。该构建目前生成可以写入微控制器的程序存储器的单个二进制映像。 为了更新现场的原因,我需要将此映像分成两个部分可以单独更新。我会将这些核心和应用称为。 Core :包含中断向量表, main()例程,以及各种驱动程序和库例程。它将位于程序存储器的前半部分。 应用:包含应用程序特定的代码。它将位于程序存储器的后半部
..
现在有$ / code> gdb 和 binutils 支持将调试信息与要调试的二进制文件分开。描述这一点的文档可以在以下网址找到: gdb:单独的调试文件 objcopy --add-gnu-debuglink,--only-keep-debug ld --build-id 经过一番实验,我可以获得 gdb (7.6)来查找调试信息,使用build-id和debug-link方法
..
我需要在我的应用程序中使用objdump和readelf命令在Windows上运行。我知道我可以安装cygwin为了使用它们。我不想使用cygwin的原因是因为我想要做文章来部署。加上我不知道如何做一个静默安装cygwin。因此,我认为我需要的是 GNU Utilities For Win32 链接指出这些库是无服务器的。 “可执行文件只依赖于Microsoft C运行时(msvcrt.dll),
..
我按照 http://llvm.org/docs上的步骤操作/GoldPlugin.html#lto-how-to-build 在FreeBSD上构建gold插件,但是! 有一个指向错误屏幕截图的链接: http://postimg.org/image/anlpuufbl/ 这是它显示的错误消息,所以我也无法得到ld-new。 我选中,并且没有在etc / make.conf中设置C
..
今天我想重新编译我的一个项目。 编译器输出结果如下: 致命错误:as:未知主机架构(无法确定要运行哪个汇编器)` : g ++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I / usr / share / qt4 / mksp
..