binutils相关内容
可以将--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
..
我想知道如何获取此Berkeley格式输出: $ size --format=berkeley /bin/ls text data bss dec hex filename 124042 4728 4832 133602 209e2 /bin/ls 从此sysv格式输出: $ size --format=sysv /bin/l
..
..
..
-l 选项告诉链接器搜索标准目录中的库.并且通过-L,我们可以指定自己的库目录进行搜索. 问题:-L 选项的顺序是否也很重要,就像 -l w.r.t 链接器一样? 此链接:http://gcc.gnu.org/onlinedocs/gcc/Link-Options.html 对-L的顺序没有多说. 编辑还有, 命令中指定的目录在默认值之前搜索行目录 来自手册页(正如
..
GNU ld(链接器脚本)手册部分 3.5.5 源代码参考 提供了一些关于如何访问链接描述文件“变量"的非常重要的信息.(实际上只是整数地址)在 C 源代码中.我用了这个信息.广泛使用链接器脚本变量,我在这里写了这个答案:如何从 C 中获取 ld 链接描述文件中定义的变量的值. 但是,很容易做错并尝试访问链接描述文件变量的值(错误地)而不是其地址,因为这有点深奥.手册(上面的链接)说:
..
我正在尝试使用 gcc 反汇编为 ARM 构建的对象.不幸的是,objdump 试图猜测代码是否是 ARM 和 Thumb,并且弄错了:它认为我的代码是 Thumb,而实际上它是 ARM. 我看到 objdump 有一个选项可以强制它将所有指令解释为 Thumb (-Mforce-thumb),但它没有一个选项来强制 ARM 模式! 这对我来说似乎是一个非常奇怪的遗漏,它严重阻碍了我完
..
我想重命名目标文件 (.o) 中的符号,使用与 binutils 的 objcopy --redefine-syms 工具等效的 Mac 工具. 我没有发现arm-apple-darwin10-objcopy.我尝试了 MacPorts 的 arm-elf-binutils 端口,也尝试使用 otool 和 segedit 进行了一些尝试,但没有取得多大成功. 有什么想法吗? 解
..
我有 rootfs 和 klibc 文件系统.我正在创建 make 规则,并且一些开发人员的编译器较旧,没有网络间连接.note1 我正在尝试验证所有文件是否都是使用 arm 仅当检测到某个版本的编译器时.我已经多次重建这棵树.我正在使用 readelf -A 并寻找 Tag_THUMB_ISA_use: Thumb-1,但这似乎是 arm 唯一的代码(但它是用互通编译器)以及 thumb 代码.
..
我已经搜索过,但没有找到可以告诉我我的 Ubuntu 上的 binutils 版本的选项.或者至少我不知道如何解释它. gcc -v - 对 binutils 一无所知 ld -v - 告诉我 GNU ld (GNU Binutils for Ubuntu) 2.24.这是否意味着我有 binutils 2.24? 解决方案 是的,使用 ld -v 你可以查看 binutils
..
从任何自动生成的STM32CubeMx生成的链接器脚本的底部: /*从标准库中删除信息*//丢弃/:{libc.a(*)libm.a(*)libgcc.a(*)} 从GNU Binutils ld(链接程序脚本)手册中, 3.6.7丢弃输出节: 特殊的输出节名称"/DISCARD/"可用于丢弃输入节.分配给名为"/DISCARD/"的输出节的任何输入节均不包含在输出文件中. 这3
..
我的问题很基本.我正在用汇编程序制作我的第一个裸机程序.该体系结构是ARMv7-M,我使用的是GNU,而我正在UAL中编写. 我在.bss(或.data,没关系)中有一个变量,声明如下: .lcomm a_variable,4 然后,我想在程序中的某处读取其值.为此,我首先将其地址加载到寄存器中,然后将变量本身的值加载到另一个寄存器中: adr r0,a_variableldr
..
在我的构建链中,我需要这样做: objcopy -I二进制-O $ BFDNAME -B $ BFDARCH 以便将二进制文件转换为库形式.因为我希望其他人能够使用它,所以我需要知道在他们运行构建时如何从他们的工具链中获取$ BFDNAME和$ BFDARCH.我可以通过对已经构建的文件运行objdump -f在本地获取值,但是有没有更好的方法,不会让我编译一次
..
实际上有两个问题与--add-section的使用有关.最简单的是标题.根据我的阅读,我一直无法弄清楚如何执行--add-section. 要使用add-section,我必须传递一个部分名称.如果我使用现有的节名称,程序将响应“无法添加节'.data':文件格式错误".也许我只需要传递另一个参数.如果我希望使用新的节名称,则会警告“分配的节'.blob'不在段中." 现在,除了“不在
..
我正在尝试创建尽可能小的ELF.我创建了这样的测试文件(NASM语法): SECTION .textdd 0xdeadbeef 使用此链接描述文件: SECTIONS {.文本 : {*(.文本)}} 然后我检查了平面二进制文件和ELF的大小,构建了两种方法: nasm -f bin -o test test.asm 它是平面二进制,所以是4个字节. nasm -f e
..
我尝试在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
..
https://sourceware.org/git/gitweb.cgi? p = binutils-gdb.git 尤其参见标签部分. 此决定的依据是什么?合并是否会影响建议的构建最新的binutils和GDB的方式? (实际上,当我签出binutils-2_25_1并运行make all && make install时,我也得到了gdb.) 解决方案 我进行了转换.我之
..
编译"make"时收到错误消息 $ make g++ -fopenmp -o lang.test main.o -I../../../include/Lheader -I../../../include -L../../../lib/ -llmi -lblas -lboost_regex -lpthread -lleveldb /usr/bin/ld: ../../../lib//libl
..
是否存在有关binutils,glibc和GCC之间的版本兼容性的官方文档?我发现此矩阵用于binutils与GCC版本的兼容性.对于GCC和glibc,最好也有这样的东西. 我要问的要点是,我需要知道是否可以构建具有“嵌入式" glibc 2.2.4的GCC 4.9.2,以便能够支持相当老的目标,例如CentOS 5. /p> 谢谢. 解决方案 使用这种新版本的gcc构建这种旧版
..
在Linux上,我试图将静态链接的ELF文件剥离为基本内容。当我运行时: strip-不需要的strip foo 或 strip --strip-all foo 生成的文件仍然带有一个胖的.notes部分,看起来充满了时髦的字符串。 真的需要.notes部分,还是可以用--remove-section安全地将其删除? 感谢您
..