У меня есть программа, которую я изначально написал в 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).
Задача ещё не решена.
Других решений пока нет …