针对符号链接而不是 soname 进行链接
我有一个 Linux 应用程序,它在链接器行上链接到: libpython2.6.so 这最终解析为 libpython.2.6.so.1.0 /usr/lib/libpython2.6.so -> libpython2.6.s…
如何设置共享库的动态链接器路径?
我想编译一个带有 .interp 段的共享库。 #include int foo(int argc, char** argv) { printf("Hello, world!\n"); return 0; } 我正在使用以下命令。 …
gcc 忽略 -Wl,--dynamic-linker 开关
我正在尝试使 --dynamic-linker 选项与 CodeSourcery 的 ARM 交叉工具链一起使用。然而 gcc 似乎忽略了它,并且从未在共享库的 ELF 中添加解释器段。…
GAS ELF 什么时候需要指令 .type、.thumb、.size 和 .section?
我正在为基于 ARM Cortex-M3 的微控制器(Thumb 2 指令集)开发一个汇编程序,使用 GNU as。 在一些示例代码中,我发现诸如 .size、.section 和 .type…
在ELF文件中,_start的地址是如何确定的?
我一直在阅读ELF规范,但无法弄清楚程序入口点和_start地址来自哪里。 看起来它们应该位于一个非常一致的位置,但我制作了一些简单的程序,并且 _star…
如何减少默认C++内存消耗?
我有一个用 C++ 编写的服务器应用程序。启动后,它在 x86 Linux(Ubuntu 8.04、GCC 4.2.4)上使用约 480 KB 内存。我认为 480 KB 的内存过多:服务器…
如何彻底剥离可执行文件
我想尽可能多地剥离 - 在 Linux 上:一个 ELF。我只想要运行它所需的东西。 我尝试使用 strip: strip --strip-all elf 但它似乎效果不佳:nm 仍然显…
“COM”是什么意思?意味着在 .symtab 部分的 Ndx 列中?
add2.c: int counter=0; int a=0; int b; int c; int add(int a, int b) { return a+b; } 编译: gcc -c add2.c -o add2.o 读取符号表: readelf --s…
ELF 文件 TLS 和 LOAD 程序部分
int i; int main() { return i; } -static 编译后 readelf -l 显示来自 elf 的程序头: Elf file type is EXEC (Executable file) Entry point 0xxxxx…
运行arm-elf-gcc编译代码时出现seg错误
使用 MacPorts,我刚刚在 MacBook Pro 上安装了 arm-elf-gcc。这工作完美无缺,一切似乎都运行良好。 然而,在用 C 和 C++ 编译一个简单的 hello worl…
链接器如何在没有 SONAME 的情况下找到共享库
如果我创建一个没有像这样的 SONAME 的共享库 gcc -shared libfoo.o -o libfoo.so 并链接到它, 链接器如何找到我的共享库? 文件名 libfoo.so 是否被…
64 位平台上的 ELF 目标文件大小限制是多少?
假设x86 64和linux平台。 如果你查看 ELF 头,偏移量都是 64 位。 因此,通过重定位 R_X86_64_64 可以轻松创建大于 4G 的目标文件。这意味着静态 .o …
声明为“const”的全局初始化变量转到文本段,而那些声明为“静态”的则转到文本段。转到数据段。为什么?
#include const int str[1000] = {0}; int main(void) { printf("arr is %d\n", str[0]); return 0; } 具有以下输出: [-exercises/adam/stack2]:size…