Как узнать, создан ли двоичный файл разделяемой библиотеки с параметром -fPIC

Я работаю над встроенной средой Linux. У меня есть набор общих библиотек в двоичном формате (у меня нет исходного кода и Makefile), и я хочу проверить, были ли они скомпилированы с параметром -fPIC или нет. Есть ли какой-либо инструмент или подход для проверки того, был ли скомпилирован двоичный файл общей библиотеки -fPIC?

С Уважением.


person Aymen    schedule 25.12.2012    source источник
comment
см. stackoverflow.com/questions/1340402/   -  person Icarus3    schedule 25.12.2012
comment
Типа objdump -d file ›file.out и проверка file.out на предмет каких-либо прямых ссылок на память, не думаю, что такая вещь существует.   -  person Mats Petersson    schedule 25.12.2012
comment
@Mats: после выполнения команды objdump -d, на основании каких параметров или знаков в file.out я могу определить, использовался ли -fPIC или нет?   -  person Aymen    schedule 25.12.2012
comment
objdump -d означает дизассемблировать код. И для проверки вам в основном нужно сканировать код на предмет перемещаемых адресных ссылок в коде. Это не тот метод, на который я бы хотел полагаться даже для одной библиотеки. Другими словами, вы не можете делать то, что хотите, простым способом. Вы, ВОЗМОЖНО, можете написать фрагмент кода, который сканирует исполняемый файл (.so или что-то еще) на предмет подозрительных записей о реляции, но это далеко не гарантированно будет легко - и, конечно же, если вы напишете что-то для x86, это может потребоваться изменить для x86- 64, и почти наверняка необходимо изменить для архитектуры ARM или MIPS.   -  person Mats Petersson    schedule 25.12.2012