Я пытаюсь выполнить кросс-компиляцию для 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
из малины.