Кросс-компиляция LLVM не может создать динамическое перемещение R_ARM_ABS32 - PullRequest
0 голосов
/ 01 мая 2019

Я пытаюсь выполнить кросс-компиляцию для Raspberry Pi с LLVM, используя LLD в качестве компоновщика с реализацией gnu stdlib.Я получаю множество следующих предупреждений, которые относятся к перемещениям внутри секций, доступных только для чтения, и все они содержатся в стандартной реализации библиотеки (кажется, происходит для c и cpp).

ld.lld: error: can't create dynamic relocation R_ARM_ABS32 against local symbol in readonly segment; recompile object files with -fPIC or pass '-Wl,-z,notext' to allow text relocations in the output
    >>> defined in /home/ted/cross.llvm.raspbian/sysroot/usr/lib/gcc/arm-linux-gnueabihf/6.3.0/../../../arm-linux-gnueabihf/libm.a(s_atan.o)
    >>> referenced by s_atan.o:(atanMp.constprop.0) in archive /home/ted/cross.llvm.raspbian/sysroot/usr/lib/gcc/arm-linux-gnueabihf/6.3.0/../../../arm-linux-gnueabihf/libm.a

Хотя диагностика говорит мнеиспользовать -z,notext это явно плохо .Есть ли другой способ исправить проблему, или я использую неправильные флаги для кросс-компиляции?

Примечание: для кросс-компиляции я использую

clang++ --target=arm-linux-gnueabihf --sysroot=./sysroot -fuse-ld=lld --verbose test.cpp -o test

./sysroot содержит/usr и /lib из малины.

...