Мои линкеры находятся в
/lib{32,64}/ld-2.20.so
, с символическими ссылками на
/lib32/ld-linux.so.2
и
/lib64/ld-linux-x86-64.so.2
(для соответствующих ld-2.20.so
s)
Когда я пытаюсь выполнить 32-битный двоичный файл, все хорошо. Они хорошо компилируются (я использую слегка измененный файл specs
gcc) и, по-видимому, отлично связываются и работают нормально.
Когда я пытаюсь использовать ldd /path/to/example/32bit/binary
, мне говорят, что это not a dynamic executable
. Насколько я понимаю, это связано с невозможностью найти компоновщик для открытия исполняемого файла.
readelf -l example_binary | grep interpreter
выдает [Requesting program interpreter: /lib32/ld-linux.so.2]
, как и ожидалось.
Есть идеи, почему это происходит / как я могу это исправить?
PS - «Установка 32-битных библиотек совместимости с использованием sudo apt get ...» не полезна, так как не имеет apt/pacman/etcetera. Если мне нужно переустановить определенную (32-разрядную) библиотеку, то знание этого будет полезным!
Pps - Файлы сценариев, установленные gcc
адресу /usr/lib{32,64}/libc.so
группируют соответствующие (реальные) файлы libc.so.6
и libc_nonshared.a
с AS_NEEDED ( /lib32/ld-linux.so.2 ) )
в хвостовой части для lib32