ucLinux libbzip2 ошибка типа перемещения при кросс-компиляции

Я пытался скомпилировать ucLinux с включенным libCurl, но всякий раз, когда я включаю curl в конфигурацию, он barfs при попытке скомпилировать libbzip2.

Я кросс-компилирую это для процессоров Coldfire 68K.

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

Вот вывод:

make[4]: Entering directory `/home/lantronix/linuxsdk/linux/lib/libbzip2'
ucfront-gcc m68k-uclinux-gcc -mcpu=5208 -DCONFIG_COLDFIRE -O2 -g -fomit-frame-pointer -pipe -fno-common -fno-builtin -Wall   -DEMBED -fno-dwarf2-cfi-asm -msep-data -Dlinux -D__linux__ -Dunix -D__uClinux__ -c blocksort.c
ucfront-gcc m68k-uclinux-gcc -mcpu=5208 -DCONFIG_COLDFIRE -O2 -g -fomit-frame-pointer -pipe -fno-common -fno-builtin -Wall   -DEMBED -fno-dwarf2-cfi-asm -msep-data -Dlinux -D__linux__ -Dunix -D__uClinux__ -c huffman.c
ucfront-gcc m68k-uclinux-gcc -mcpu=5208 -DCONFIG_COLDFIRE -O2 -g -fomit-frame-pointer -pipe -fno-common -fno-builtin -Wall   -DEMBED -fno-dwarf2-cfi-asm -msep-data -Dlinux -D__linux__ -Dunix -D__uClinux__ -c crctable.c
ucfront-gcc m68k-uclinux-gcc -mcpu=5208 -DCONFIG_COLDFIRE -O2 -g -fomit-frame-pointer -pipe -fno-common -fno-builtin -Wall   -DEMBED -fno-dwarf2-cfi-asm -msep-data -Dlinux -D__linux__ -Dunix -D__uClinux__ -c randtable.c
ucfront-gcc m68k-uclinux-gcc -mcpu=5208 -DCONFIG_COLDFIRE -O2 -g -fomit-frame-pointer -pipe -fno-common -fno-builtin -Wall   -DEMBED -fno-dwarf2-cfi-asm -msep-data -Dlinux -D__linux__ -Dunix -D__uClinux__ -c compress.c
ucfront-gcc m68k-uclinux-gcc -mcpu=5208 -DCONFIG_COLDFIRE -O2 -g -fomit-frame-pointer -pipe -fno-common -fno-builtin -Wall   -DEMBED -fno-dwarf2-cfi-asm -msep-data -Dlinux -D__linux__ -Dunix -D__uClinux__ -c decompress.c
ucfront-gcc m68k-uclinux-gcc -mcpu=5208 -DCONFIG_COLDFIRE -O2 -g -fomit-frame-pointer -pipe -fno-common -fno-builtin -Wall   -DEMBED -fno-dwarf2-cfi-asm -msep-data -Dlinux -D__linux__ -Dunix -D__uClinux__ -c bzlib.c
ucfront-gcc m68k-uclinux-gcc -mcpu=5208 -DCONFIG_COLDFIRE -shared -Wl,-soname -Wl,libbz2.so.1.0 -o libbz2.so.1.0.3 blocksort.o huffman.o crctable.o randtable.o compress.o decompress.o bzlib.o
ERROR: reloc type R_68K_32 is not supported for PIC
ERROR: reloc type R_68K_32 is not supported for PIC
ERROR: reloc type R_68K_32 is not supported for PIC
ERROR: reloc type R_68K_32 is not supported for PIC
ERROR: reloc type R_68K_32 is not supported for PIC
ERROR: reloc type R_68K_32 is not supported for PIC
ERROR: reloc type R_68K_32 is not supported for PIC
ERROR: reloc type R_68K_32 is not supported for PIC
ERROR: reloc type R_68K_32 is not supported for PIC
ERROR: reloc type R_68K_32 is not supported for PIC
ERROR: reloc type R_68K_32 is not supported for PIC
ERROR: reloc type R_68K_32 is not supported for PIC
ERROR: reloc type R_68K_32 is not supported for PIC
ERROR: reloc type R_68K_32 is not supported for PIC
ERROR: reloc type R_68K_32 is not supported for PIC
ERROR: reloc type R_68K_32 is not supported for PIC
ERROR: reloc type R_68K_32 is not supported for PIC
ERROR: reloc type R_68K_32 is not supported for PIC
ERROR: reloc type R_68K_32 is not supported for PIC
ERROR: reloc type R_68K_32 is not supported for PIC
ERROR: reloc type R_68K_32 is not supported for PIC
ERROR: reloc type R_68K_32 is not supported for PIC
ERROR: reloc type R_68K_32 is not supported for PIC
ERROR: reloc type R_68K_32 is not supported for PIC
ERROR: reloc type R_68K_32 is not supported for PIC
ERROR: reloc type R_68K_32 is not supported for PIC
ERROR: reloc type R_68K_32 is not supported for PIC
ERROR: reloc type R_68K_32 is not supported for PIC
ERROR: reloc type R_68K_32 is not supported for PIC
ERROR: reloc type R_68K_32 is not supported for PIC
ERROR: reloc type R_68K_32 is not supported for PIC
ERROR: reloc type R_68K_32 is not supported for PIC
ERROR: reloc type R_68K_32 is not supported for PIC
ERROR: reloc type R_68K_32 is not supported for PIC
ERROR: reloc type R_68K_32 is not supported for PIC
ERROR: reloc type R_68K_32 is not supported for PIC
ERROR: reloc type R_68K_32 is not supported for PIC
ERROR: reloc type R_68K_32 is not supported for PIC
ERROR: reloc type R_68K_32 is not supported for PIC
ERROR: reloc type R_68K_32 is not supported for PIC
ERROR: reloc type R_68K_32 is not supported for PIC
ERROR: reloc type R_68K_32 is not supported for PIC
ERROR: reloc type R_68K_32 is not supported for PIC
43 bad relocs
/home/lantronix/linuxsdk/toolchains/freescale-coldfire-4.4/m68k-uclinux/bin/ld.real: warning: cannot find entry symbol _start; defaulting to 00000000
collect2: ld returned 1 exit status
make[4]: *** [all] Error 1
make[4]: Leaving directory `/home/lantronix/linuxsdk/linux/lib/libbzip2'
make[3]: *** [libbzip2] Error 2
make[3]: Leaving directory `/home/lantronix/linuxsdk/linux/lib'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/home/lantronix/linuxsdk/linux/lib'
make[1]: *** [subdirs] Error 1
make[1]: Leaving directory `/home/lantronix/linuxsdk/linux'
make: *** [build] Error 2

1 ответ

Я обнаружил, что выбивая -msep-data флаг (или положить -mno-sep-data после этого) делает эти предупреждения уйти. Со страницы документа GCC:

Создайте код, который позволяет сегменту данных находиться в другой области памяти, чем текстовый сегмент. Это позволяет выполнять на месте в среде без управления виртуальной памятью. Эта опция подразумевает -fPIC.

Я также обнаружил, что -fPIC или же -fno-PIC не имел никакого эффекта.

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