binutils相关内容

LD--导出--仅针对一个库的动态?

可以将--export-dynamic传递给ld,这将导出程序中的符号(以便它们可用于运行时加载的任何共享库): $ cat > test.c void foo() {} int main() { foo(); } ^D $ gcc test.c $ nm -D a.out | grep foo ...没什么。现在: $ gcc -Wl,--export-dynamic te ..
发布时间:2022-08-23 11:59:18 服务器开发

GNU 链接器中 -l 和 -L 选项的顺序是否重要?

-l 选项告诉链接器搜索标准目录中的库.并且通过-L,我们可以指定自己的库目录进行搜索. 问题:-L 选项的顺序是否也很重要,就像 -l w.r.t 链接器一样? 此链接:http://gcc.gnu.org/onlinedocs/gcc/Link-Options.html 对-L的顺序没有多说. 编辑还有, 命令中指定的目录在默认值之前搜索行目录 来自手册页(正如 ..
发布时间:2022-01-11 15:13:03 其他开发

正在访问“值";C 中的链接描述文件变量未定义行为?

GNU ld(链接器脚本)手册部分 3.5.5 源代码参考 提供了一些关于如何访问链接描述文件“变量"的非常重要的信息.(实际上只是整数地址)在 C 源代码中.我用了这个信息.广泛使用链接器脚本变量,我在这里写了这个答案:如何从 C 中获取 ld 链接描述文件中定义的变量的值. 但是,很容易做错并尝试访问链接描述文件变量的值(错误地)而不是其地址,因为这有点深奥.手册(上面的链接)说: ..
发布时间:2022-01-11 15:07:48 其他开发

objdump 和 ARM 与 Thumb

我正在尝试使用 gcc 反汇编为 ARM 构建的对象.不幸的是,objdump 试图猜测代码是否是 ARM 和 Thumb,并且弄错了:它认为我的代码是 Thumb,而实际上它是 ARM. 我看到 objdump 有一个选项可以强制它将所有指令解释为 Thumb (-Mforce-thumb),但它没有一个选项来强制 ARM 模式! 这对我来说似乎是一个非常奇怪的遗漏,它严重阻碍了我完 ..
发布时间:2021-11-17 22:12:18 其他开发

Mac/iPhone 的 objcopy 等价物?

我想重命名目标文件 (.o) 中的符号,使用与 binutils 的 objcopy --redefine-syms 工具等效的 Mac 工具. 我没有发现arm-apple-darwin10-objcopy.我尝试了 MacPorts 的 arm-elf-binutils 端口,也尝试使用 otool 和 segedit 进行了一些尝试,但没有取得多大成功. 有什么想法吗? 解 ..
发布时间:2021-11-17 21:46:15 其他开发

为 Thumb OR Arm 编译的 ARM ELF 的脚本/工具谓词

我有 rootfs 和 klibc 文件系统.我正在创建 make 规则,并且一些开发人员的编译器较旧,没有网络间连接.note1 我正在尝试验证所有文件是否都是使用 arm 仅当检测到某个版本的编译器时.我已经多次重建这棵树.我正在使用 readelf -A 并寻找 Tag_THUMB_ISA_use: Thumb-1,但这似乎是 arm 唯一的代码(但它是用互通编译器)以及 thumb 代码. ..
发布时间:2021-11-17 21:44:27 其他开发

如何查看 Ubuntu 上的 Binutils 版本?

我已经搜索过,但没有找到可以告诉我我的 Ubuntu 上的 binutils 版本的选项.或者至少我不知道如何解释它. gcc -v - 对 binutils 一无所知 ld -v - 告诉我 GNU ld (GNU Binutils for Ubuntu) 2.24.这是否意味着我有 binutils 2.24? 解决方案 是的,使用 ld -v 你可以查看 binutils ..
发布时间:2021-09-12 19:02:11 其他开发

为什么STM32 gcc链接程序脚本会自动丢弃以下标准库中的所有输入节:libc.a,libm.a,libgcc.a?

从任何自动生成的STM32CubeMx生成的链接器脚本的底部: /*从标准库中删除信息*//丢弃/:{libc.a(*)libm.a(*)libgcc.a(*)} 从GNU Binutils ld(链接程序脚本)手册中, 3.6.7丢弃输出节: 特殊的输出节名称"/DISCARD/"可用于丢弃输入节.分配给名为"/DISCARD/"的输出节的任何输入节均不包含在输出文件中. 这3 ..
发布时间:2021-05-29 20:03:45 其他开发

GNU as:如何将.bss/.data符号加载到寄存器?

我的问题很基本.我正在用汇编程序制作我的第一个裸机程序.该体系结构是ARMv7-M,我使用的是GNU,而我正在UAL中编写. 我在.bss(或.data,没关系)中有一个变量,声明如下: .lcomm a_variable,4 然后,我想在程序中的某处读取其值.为此,我首先将其地址加载到寄存器中,然后将变量本身的值加载到另一个寄存器中: adr r0,a_variableldr ..
发布时间:2021-05-11 19:12:26 其他开发

什么是“正确"?确定GNU binutils的目标和体系结构的方法?

在我的构建链中,我需要这样做: objcopy -I二进制-O $ BFDNAME -B $ BFDARCH 以便将二进制文件转换为库形式.因为我希望其他人能够使用它,所以我需要知道在他们运行构建时如何从他们的工具链中获取$ BFDNAME和$ BFDARCH.我可以通过对已经构建的文件运行objdump -f在本地获取值,但是有没有更好的方法,不会让我编译一次 ..
发布时间:2021-05-11 19:12:02 其他开发

如何使用OBJCOPY的--add-section开关?

实际上有两个问题与--add-section的使用有关.最简单的是标题.根据我的阅读,我一直无法弄清楚如何执行--add-section. 要使用add-section,我必须传递一个部分名称.如果我使用现有的节名称,程序将响应“无法添加节'.data':文件格式错误".也许我只需要传递另一个参数.如果我希望使用新的节名称,则会警告“分配的节'.blob'不在段中." 现在,除了“不在 ..
发布时间:2021-05-04 19:02:17 其他开发

Binutils LD创建巨大的文件

我正在尝试创建尽可能小的ELF.我创建了这样的测试文件(NASM语法): SECTION .textdd 0xdeadbeef 使用此链接描述文件: SECTIONS {.文本 : {*(.文本)}} 然后我检查了平面二进制文件和ELF的大小,构建了两种方法: nasm -f bin -o test test.asm 它是平面二进制,所以是4个字节. nasm -f e ..
发布时间:2021-04-23 20:07:33 其他开发

来自addr2line的行号错误

我尝试在C ++程序的回溯中找到调用的确切行.现在,我正在使用这些行(来自backtrace的手册页)来获取跟踪: void * bt_buffer [1000];char ** bt_strings;int bt_nptrs = backtrace(bt_buffer,1000);bt_strings = backtrace_symbols(bt_buffer,bt_nptrs); 在b ..
发布时间:2021-04-19 19:10:10 C/C++开发

Glibc,GCC,binutils兼容性

是否存在有关binutils,glibc和GCC之间的版本兼容性的官方文档?我发现此矩阵用于binutils与GCC版本的兼容性.对于GCC和glibc,最好也有这样的东西. 我要问的要点是,我需要知道是否可以构建具有“嵌入式" glibc 2.2.4的GCC 4.9.2,以便能够支持相当老的目标,例如CentOS 5. /p> 谢谢. 解决方案 使用这种新版本的gcc构建这种旧版 ..
发布时间:2020-11-12 22:45:47 C/C++开发

是否真的需要ELF .notes部分?

在Linux上,我试图将静态链接的ELF文件剥离为基本内容。当我运行时: strip-不需要的strip foo 或 strip --strip-all foo 生成的文件仍然带有一个胖的.notes部分,看起来充满了时髦的字符串。 真的需要.notes部分,还是可以用--remove-section安全地将其删除? 感谢您 ..
发布时间:2020-10-28 21:28:32 其他开发