我试图通过termux在我的ARMv8-A手机上编译一个简单的测试程序,以确保它适用于ARMv8-R手机(仅限32位),但clang一直试图链接到64 crtbegin_dynamic.o和crtend_android.o的位版本。
我发现this closed issue on termux-packages指示我安装ndk-multilib和lld,我甚至将带有符号链接的binutils ld替换为ld.lld(当然要保留binutils)但是我'我仍然不确定给clang什么参数。
clang -m32 -L$PREFIX/arm-linux-androideabi/lib -L/system/lib -otest test.c
/data/data/com.termux/files/usr/bin/ld: error: /data/data/com.termux/files/usr/bin/../lib/crtbegin_dynamic.o is incompatible with armelf_linux_eabi
/data/data/com.termux/files/usr/bin/ld: error: /data/data/com.termux/files/usr/bin/../lib/crtend_android.o is incompatible with armelf_linux_eabi
clang-6.0: error: linker command failed with exit code 1 (use -v to see invocation)
(-v输出只显示clang明确告诉ld使用它们)