Linux 如何知道共享库二进制文件是否使用-fPIC选项构建
我在嵌入式Linux环境下工作。我有一组二进制格式的共享库(我没有源代码和Makefile),我想检查它们是否使用-fPIC选项编译。是否有任何工具或方法来测试共享库二进制文件是否编译为-fPICLinux 如何知道共享库二进制文件是否使用-fPIC选项构建,linux,shared-libraries,fpic,Linux,Shared Libraries,Fpic,我在嵌入式Linux环境下工作。我有一组二进制格式的共享库(我没有源代码和Makefile),我想检查它们是否使用-fPIC选项编译。是否有任何工具或方法来测试共享库二进制文件是否编译为-fPIC 问候 请参阅排序“objdump-d file>file.out”和检查file.out以获得某种类型的直接内存引用,不要认为存在这种情况。@Mats:在生成objdump-d之后,我可以根据哪些参数或在file.out中签名来确定是否使用了-fPIC?objdump-d的意思是“反汇编代码”。要进行
问候 请参阅排序“objdump-d file>file.out”和检查file.out以获得某种类型的直接内存引用,不要认为存在这种情况。@Mats:在生成objdump-d之后,我可以根据哪些参数或在file.out中签名来确定是否使用了-fPIC?objdump-d的意思是“反汇编代码”。要进行检查,您基本上必须扫描代码中的可重定位地址引用。即使是一个图书馆,我也不想依赖这种方法。换句话说,你不能用任何简单的方式做你想做的事情。您可能会编写一段代码来扫描可执行文件(.so或其他内容)以查找“可疑的中继条目”,但这远不能保证是容易的——当然,如果您为x86编写一些东西,它可能需要为x86-64进行更改,并且几乎肯定需要为ARM或MIPS体系结构进行更改。