Я пытаюсь кросс-компилировать libunwind
в aarch64
архитектуру, используя следующую команду:
./configure --prefix=/home/test/libunwind/arm_build --libdir=/home/test/libunwind/arm_build/lib --target=aarch64 --host=x86_64 CC=/home/gcc-10.3/bin/aarch64-none-linux-gnu-gcc CXX=arm-none-linux-gnu-g++ LDFLAGS = "-L$PWD/src/.libs" --enable-shared=yes
Однако это приводит к компиляции следующих файлов:
~/libunwind » tree arm_build
arm_build
├── include
│ ├── libunwind-aarch64.h
│ ├── libunwind-common.h
│ ├── libunwind-coredump.h
│ ├── libunwind-dynamic.h
│ ├── libunwind-ptrace.h
│ └── libunwind-x86.h
└── lib
├── libunwind-aarch64.a
├── libunwind-aarch64.la
├── libunwind-x86.a
├── libunwind-x86.la
└── pkgconfig
├── libunwind-coredump.pc
├── libunwind-generic.pc
└── libunwind-ptrace.pc
3 directories, 13 files
Я также попытался построить его на собственной архитектуре x86
(./configure --prefix=/home/test/libunwind/x86_build
, чтобы увидеть, создает ли это общую библиотеку, и это действительно так, как показано ниже:
~/libunwind » tree x86_build
x86_build
├── include
│ ├── libunwind-common.h
│ ├── libunwind-coredump.h
│ ├── libunwind-dynamic.h
│ ├── libunwind.h
│ ├── libunwind-ptrace.h
│ ├── libunwind-x86_64.h
│ └── unwind.h
└── lib
├── libunwind.a
├── libunwind-coredump.a
├── libunwind-coredump.la
├── libunwind-coredump.so -> libunwind-coredump.so.0.0.0
├── libunwind-coredump.so.0 -> libunwind-coredump.so.0.0.0
├── libunwind-coredump.so.0.0.0
├── libunwind-generic.a -> libunwind-x86_64.a
├── libunwind-generic.so -> libunwind-x86_64.so
├── libunwind.la
├── libunwind-ptrace.a
├── libunwind-ptrace.la
├── libunwind-ptrace.so -> libunwind-ptrace.so.0.0.0
├── libunwind-ptrace.so.0 -> libunwind-ptrace.so.0.0.0
├── libunwind-ptrace.so.0.0.0
├── libunwind-setjmp.a
├── libunwind-setjmp.la
├── libunwind-setjmp.so -> libunwind-setjmp.so.0.0.0
├── libunwind-setjmp.so.0 -> libunwind-setjmp.so.0.0.0
├── libunwind-setjmp.so.0.0.0
├── libunwind.so -> libunwind.so.8.0.1
...
Любые потенциальные предложения о том, что я мог бы попытаться принудительно создать разделяемую библиотеку при попытке кросс-компиляции?
Заранее спасибо.
Хорошо, я смог найти ответ.
TLDR:
./configure --enable-shared --prefix=/home/test/libunwind/arm_build --build=x86_64-pc-linux-gnu --host=aarch64-none-linux-gnu --libdir=/home/test/libunwind/arm_build/lib CC=/home/test/gcc-10.3/bin/aarch64-none-linux-gnu-gcc CXX=arm-none-linux-gnu-g++ LDFLAGS = "-L$PWD/src/.libs"
Кажется, что вы не должны указывать цель, если вы используете предварительно собранный компилятор (который я использую gcc 10.3
) при запуске configure
.
Надеюсь, это поможет другим.
~/libunwind » tree arm_build
arm_build
├── include
│ ├── libunwind-aarch64.h
│ ├── libunwind-common.h
│ ├── libunwind-coredump.h
│ ├── libunwind-dynamic.h
│ ├── libunwind.h
│ ├── libunwind-ptrace.h
│ └── unwind.h
└── lib
├── libunwind.a
├── libunwind-aarch64.a
├── libunwind-aarch64.la
├── libunwind-aarch64.so -> libunwind-aarch64.so.8.0.1