Как правильно использовать оптимизацию времени компоновки с исходными файлами и файлами сборки?

В настоящее время я играю с LTO для встроенной системы (чтобы увидеть, может ли она уменьшить размер), и у меня возникли некоторые проблемы с тем, чтобы все правильно связать, используя ld напрямую, и мне было интересно, что я делаю не так. В основном это игра с игрушечной программой, прежде чем я использую ее в более крупном проекте.

Настройка в основном у меня есть 3 файла:

  • test.c - функция преобразования данных
  • test_main.c - вызывает функцию, определенную в start.S
  • start.S - вызывает функцию в test.c, а также содержит _start

Я компилирую файлы, используя:

      arm-none-eabi-as -mthumb -Wall start.S -o start.o
arm-none-eabi-gcc -Wall -Werror -march=armv7 -mtune=cortex-r7 -mthumb -fPIC -nostdlib -flto -static test.c -c test.o
arm-none-eabi-gcc -Wall -Werror -march=armv7 -mtune=cortex-r7 -mthumb -fPIC -nostdlib -flto -static test_main.c -c test_main.o

Если я затем попытаюсь связать программу с ld, я получу:

      arm-none-eabi-ld --static -fPIC --shared --fatal-warning test.o start.o test_main.o -test
arm-none-eabi-ld: test.o: plugin needed to handle lto object
arm-none-eabi-ld: test.o: plugin needed to handle lto object
arm-none-eabi-ld: test_main.o: plugin needed to handle lto object
arm-none-eabi-ld: test_main.o: plugin needed to handle lto object   

Если я использую gcc, он работает:

      arm-none-eabi-gcc -Wall -Werror -march=armv7 -mtune=cortex-r7 -mthumb -fPIC -nostdlib -flto -static test.o start.o test_main.o -o test.gcc

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

      arm-none-eabi-ld --static -fPIC --shared --fatal-warning --plugin <path_to_correct>/liblto_plugin.so test.o start.o test_main.o -test
arm-none-eabi-ld: <path_to_correct>.../lto-plugin.c:741: all_symbols_read_handler: Assertion 'lto_wrapper_argv' failed.
Aborted (core dumped)

Какие флаги, параметры и т. Д. Мне не хватает в моем вызове ld?

0 ответов

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