LINUX.ORG.RU

История изменений

Исправление question4, (текущая версия) :

Ещё добавлю что для версии, собираемой с -О0 можно использовать флаги gcc типа -fkeep-inline-functions

С этого начал. Не помогло.

и -fgnu89-inline.

А вот с ним всё работает.

Идея inline ф-ий заключается в их подстановке при компиляции и линковке. При отсутствии оптимизаций gcc гонит всё «как есть» линкеру, не выстраивая оптимизированную таблицу перекрёстных ссылок. При отсутствии оптимизаций (-О0 же!) ни каких оптимизаций не производится и инлайнинга тоже. Ф-я не подставляется без оптимизаций.

Я с самого начала прогнал «gcc -E unxwb.c > preprocessed.c»; убедился, что все инклуды в нём есть, и все 4 инлайнемых функции присутствуют; затем попытался собрать «gcc preprocessed.c -lz». В результате получил те же ошибки — не нашло инлайн-функции.

То есть, если функции приписать атрибут inline, при сборке без оптимизаций она будет выброшена, и такое поведение соответствует замыслу авторов-разработчиков?

Исходная версия question4, :

Ещё добавлю что для версии, собираемой с -О0 можно использовать флаги gcc типа -fkeep-inline-functions

С этого начал. Не помогло.

и -fgnu89-inline.

А вот с ним всё работает.

Идея inline ф-ий заключается в их подстановке при компиляции и линковке. При отсутствии оптимизаций gcc гонит всё «как есть» линкеру, не выстраивая оптимизированную таблицу перекрёстных ссылок. При отсутствии оптимизаций (-О0 же!) ни каких оптимизаций не производится и инлайнинга тоже. Ф-я не подставляется без оптимизаций.

Я с самого начала прогнал «gcc -E unxwb.c > preprocessed.c»; убедился, что все инклуды в нём есть, и все 4 инлайнемых функции присутствуют; затем попытался собрать «gcc preprocessed.c -lz». В результате получил те же ошибки — не нашло инлайн-функции.

То есть, если функции приписать атрибут inline, при сборке без оптимизаций она будет выброшена, и такое поведение соответствует замыслу авторов?