在现代Linux中,几乎所有的对象都被剥离并分为两个部分(两个文件)。第一个是可执行文件本身,第二个是从原始ELF文件中剥离出来的调试符号。这些文件是用以下方式创建的:objcopy --only-keep-debug original.elf binary.dbg mv original.e...
我有一个 ELF 32 位 x86 文件,其中包含一个 .eh_frame 部分,尽管我试图1删除它。 我想删除 .eh_frame 部分,而不触动其他部分中的任何符号,包括未使用的符号。 strip 似乎没有 --remove-only 选项,并且它总是会修改其他部分。 如何在不修改文...
我刚开始学习一些ARM编程,遇到了一个稍微有点烦人的问题。我正在使用Sourcery CodeBench Lite 2013.05-23(可以在此处找到:https://sourcery.mentor.com/GNUToolchain/release2449)来编译我的源代码。 我需要告诉G...
我希望创建一个外部符号文件,我会使用objcopy --add-gnu-debuglink=...从我的ELF文件中引用它。 现在,我知道如何仅提取调试符号(objcopy --only-keep-debug),以及如何仅剥离调试符号(objcopy --strip-debug)。 然而,...
前提条件 第三方提供了一个 C++ 可执行文件 fooapp,它使用了一个共享对象 libfoo.so。该库还附带有一个头文件 foo.hpp,以便开发人员可以构建其他应用程序: /* foo.hpp */ namespace foo { void bar(int a, int b);...
我试图使用objcopy将文本文件的二进制形式包含到可执行文件中。(在运行时,我需要将该文件作为字符串使用)。这很好用,直到链接器需要从符号名称找到引用。问题在于,objcopy在符号名称前面加上了文件的路径名。由于我正在使用GNU Autotools来发布软件包,这个预先添加的路径名会发生更...
通常的做法是使用带有调试符号的编译器编译,然后使用 objcopy 将可执行文件和调试信息分离(然后将其打包到单独的软件包中或存储在符号服务器上)。 如何在 CMake 中正确地分离调试符号?我只看到了一些讨论和不完整的代码示例。 操作系统是Linux,并且使用的编译器是GCC。
有没有办法在对象模块中覆盖静态作用域函数? 如果我从以下代码开始,具有全局符号“foo”的模块是一个调用本地符号“bar”的函数,而后者又调用本地符号“baz”的函数。 [scameron@localhost ~]$ cat foo.c #include <stdio.h> s...