Как компоновщик gcc выбирает / usr / lib вместо / usr / lib64 для разрешения библиотеки? - PullRequest
5 голосов
/ 08 ноября 2010

Моя строка ссылки на gcc включает следующие две записи подряд:

-lrt
-lpam

И это выглядит как:

/usr/lib64/librt.so /usr/lib/libpam.so

Почему rt разрешается в lib64, тогда как pam разрешается в lib и, следовательно, завершается ошибкой:

/usr/lib/libpam.so: could not read symbols: File in wrong format

Поскольку это только 32-битный ELF. Существует /usr/lib64/libpam.so с 64-битным ELF, почему он не взят?

1 Ответ

1 голос
/ 08 ноября 2010

Попробуйте использовать -m32 для принудительной установки 32-битных значений. Также проверьте все переменные среды, которые устанавливаются вашим .bashrc или .bash_profile, под которым вы компилируете, чтобы определить, является ли что-либо перекрестным.

...