Я использую 'ld -r -b binary -o binary.o foo.jpeg' для встраивания ресурсов в мою программу.Работает потрясающе.Мне просто интересно, почему символ int _binary_size никогда не читает правильно, отрицательное или слишком большое число, но остается неизменным между запусками программы.Я всегда должен делать _binary_end - _binary_start, который работает безупречно.Кажется, это ни для кого не работает ... как здесь .... почему это так?
Нет причин не использовать end-start, поскольку он заменяет символ размера, ноэто все еще оставляет меня любопытным.
edit: пример кода.
extern const unsigned char _binary_scna4_jpg_start;
extern const unsigned char _binary_scna4_jpg_end;
extern const int _binary_scna4_jpg_size;
int size = &_binary_scna4_jpg_end - &_binary_scna4_jpg_start;
printf("Size is %d vs %d \n", size, _binary_scna4_jpg_size);
это печатает:
Size is 1192071 vs -385906356
Первое число - правильный размер двоичного файла и все моиизображения читаются безупречно.
Вывод нм для хорошей меры:
0000000000123087 D _binary_scna4_jpg_end
0000000000123087 A _binary_scna4_jpg_size
0000000000000000 D _binary_scna4_jpg_start