Как интерпретировать вывод gcc -print-multi-lib

man gcc объясняет, что -print-multi-lib списки переключателей и как они разделены, но не то, что, например,

.;

или же

.;
32;@m32
x32;@mx32

может означать. Я даже не могу сказать, есть ли у меня multilib поддержка в соответствии с просьбой /questions/6504455/oshibka-kompilyatsii-arm-zaregistrirovannyij-vfp-ispolzuetsya-ispolnyaemyim-fajlom-a-ne-obektnyim-fajlom/6504465#6504465.

я использую gcc 5.3.1 и 4.6.3.

1 ответ

Решение

Вывод в форму: .; без каких-либо дополнительных строк означает, что на вашем хосте не было найдено мультилибов.

В общем:

-print-multi-lib: Эта опция отладки заставляет GCC отображать сопоставление между именами каталогов multilib и переключателями компилятора, которые их включают. Эта информация извлекается из файлов спецификации, используемых компилятором, в котором имя каталога отделяется от переключателей точкой с запятой, и каждый переключатель начинается с символа @ вместо традиционного символа тире / минус, без пробелов между несколькими переключателями,

Источник: "Полное руководство по GCC " Уильяма фон Хагена [2nd edition, Apress 2006]. Обратите внимание - эта книга охватывает версии GCC 4.xy, но я не нашел никакой информации о некоторых радикальных изменениях в этой области в GCC > 5.

Поэтому второй вывод в вашем посте показывает информацию о двух мультилибах.

Использование multilib типично для кросс-компиляции.

Я думаю, что стоит упомянуть еще одну цитату из той же книги о другом полезном переключателе:

-print-multi-directory: Эта опция отладки заставляет GCC печатать имя каталога, соответствующее мультилибе, выбранному любыми другими переключателями, указанными в командной строке. Предполагается, что этот каталог существует в каталоге, заданном переменной среды GCC_EXEC_PREFIX.

Другие вопросы по тегам