неправильный класс ELF: ELFCLASS64 даже при компиляции с установленными флагами -m32?

Я на 64-битной машине wsl2 и пытаюсь скомпилировать 32-битную программу. Для этого я использую эти команды CC=afl-clang CXX=afl-clang++ ./configure --enable-static=yes --enable-shared=no --host=i386 --build=i386 CFLAGS='-m32 'CXXFLAGS='-m32' LDFLAGS='-m32', а потом все убираю. Тем не менее, когда я запускаю программу, она говорит, что общий объект, который она пытается загрузить, находится в неправильном ELFCLASS64. Как это исправить? Программа 32-битная, но общие объекты, которые также скомпилированы, 64-битные.


person lemonadeice    schedule 14.12.2020    source источник
comment
Поскольку вы используете --disable-shared, вам не следует создавать общие библиотеки. Возможно, сборка зависит от какой-то внешней библиотеки, которую вы установили только как 64-битную, а не 32-битную? Какой общий объект выдает ошибку?   -  person Chris Dodd    schedule 15.12.2020
comment
Я ввел неправильную команду. Общий объект — это общий объект, созданный программой. Это не внешний объект. Это делается при компиляции.   -  person lemonadeice    schedule 15.12.2020
comment
stackoverflow.com/q/16004206/1216776   -  person stark    schedule 15.12.2020
comment
Это приводит к ошибке, говорящей, что компилятор c не может создавать исполняемые файлы.   -  person lemonadeice    schedule 15.12.2020
comment
Я не мог решить проблему, но я просто скачал новую среду и сделал все, используя 32-битную версию. Я предполагаю, что решение состоит в том, чтобы использовать эту команду CC=afl-clang CXX=afl-clang++ ./configure --enable-static=yes --enable-shared=no --host=i386 --build=i386 CFLAGS=' -m32' CXXFLAGS='-m32' LDFLAGS='-m32', но также скомпилировать afl-clang с 32-битной версией. afl-clang не может создавать исполняемые файлы, потому что это 64-битный компилятор.   -  person lemonadeice    schedule 15.12.2020