Кросс-компиляция для Windows. Objcopy, кажется, дает плохой объектный файл

У меня есть программа, которую я изначально написал в Linux, которая использует objcopy для встраивания некоторых изображений в исполняемый файл, который будет использоваться во время выполнения. У меня нет проблем с этим в Linux вообще, и он работает нормально.

Однако, когда я пытаюсь выполнить кросс-компиляцию программы для окон, я получаю список неопределенных ссылок на этапе компоновки, что говорит мне, что objcopy не работает. Может ли кто-нибудь, пожалуйста, указать мне правильное направление, чтобы заставить это кросс-компиляцию правильно Я знаю, что это не проблема кода, так как код переносим.

Команда, используемая для кросс-компиляции с помощью objcopy

i586-mingw32msvc-objcopy --input binary --output=pe-i386 --binary-architecture i386 images/HD44780.bmp HD44780_bmp.o

Результирующая ошибка на этапе компоновки

HDxx780.o:HDxx780.cpp:(.text+0xbe2): undefined reference to `__binary_images_HD44780_bmp_end'
HDxx780.o:HDxx780.cpp:(.text+0xbef): undefined reference to `__binary_images_HD44780_bmp_start'
HDxx780.o:HDxx780.cpp:(.text+0xc04): undefined reference to `__binary_images_HD44780_bmp_start'

Макросы, которые есть в моем коде для доступа к данным

extern char _binary_images_HD44780_bmp_start, _binary_images_HD44780_bmp_end;

#define HD44780_DATA ((void *) &_binary_images_HD44780_bmp_start)
#define HD44780_SIZE ((size_t) (&_binary_images_HD44780_bmp_end - &_binary_images_HD44780_bmp_start))

Поддерживаемые форматы i586-mingw32-objcopy

me@mypc:~/ > i586-mingw32msvc-objcopy --info
BFD header file version (GNU Binutils) 2.20
pe-i386
(header little endian, data little endian)
i386
pei-i386
(header little endian, data little endian)
i386
elf32-i386
(header little endian, data little endian)
i386
elf32-little
(header little endian, data little endian)
i386
elf32-big
(header big endian, data big endian)
i386
srec
(header endianness unknown, data endianness unknown)
i386
symbolsrec
(header endianness unknown, data endianness unknown)
i386
verilog
(header endianness unknown, data endianness unknown)
i386
tekhex
(header endianness unknown, data endianness unknown)
i386
binary
(header endianness unknown, data endianness unknown)
i386
ihex
(header endianness unknown, data endianness unknown)
i386

pe-i386 pei-i386 elf32-i386 elf32-little elf32-big srec
i386 pe-i386 pei-i386 elf32-i386 elf32-little elf32-big srec

symbolsrec verilog tekhex binary ihex
i386 symbolsrec verilog tekhex binary ihex

Я пытаюсь скомпилировать в Windows (x86).
Машина, с которой я компилирую это Linux (x86).

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]