链接重定位时格式不匹配。其中 EM: 62 为x86平台文件格式,故而报错。
/home/toolchain-gcc/bin/../lib/gcc/aarch64-none-linux-gnu/14.2.1/../../../../aarch64-none-linux-gnu/bin/ld: simd/CMakeFiles/simd.dir/x86_64/jfdctflt-sse.asm.o: Relocations in generic ELF (EM: 62)
/home/toolchain-gcc/bin/../lib/gcc/aarch64-none-linux-gnu/14.2.1/../../../../aarch64-none-linux-gnu/bin/ld: simd/CMakeFiles/simd.dir/x86_64/jfdctflt-sse.asm.o: error adding symbols: file in wrong format
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/turbojpeg.dir/build.make:1194: libturbojpeg.so.0.3.0] Error 1
make[1]: *** [CMakeFiles/Makefile2:386: CMakeFiles/turbojpeg.dir/all] Error 2
make: *** [Makefile:141: all] Error 2
解决:
cd libjpeg-turbo-3.0.1
mkdir build
cd build
cmake ../ -DCMAKE_INSTALL_PREFIX=/home/libjpeg-turbo/libjpeg-turbo-3.0.1/build/lib/ \
-DCMAKE_BUILD_TYPE=RELEASE \
-DENABLE_STATIC=TRUE \
-DCMAKE_INSTALL_DOCDIR=/home/libjpeg-turbo/libjpeg-turbo-3.0.1/build/share \
-DCMAKE_INSTALL_DEFAULT_LIBDIR=/home/libjpeg-turbo/libjpeg-turbo-3.0.1/build/lib \
-DCMAKE_C_COMPILER=/home/toolchain-gcc/bin/aarch64-none-linux-gnu-gcc \
-DCMAKE_SYSTEM_PROCESSOR=armeabi-v8a \
-DCMAKE_SYSTEM_NAME=Linux
readelf -h libjpeg.so
ELF Header:
Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
Class: ELF64
Data: 2's complement, little endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: DYN (Shared object file)
Machine: AArch64
Version: 0x1
Entry point address: 0x0
Start of program headers: 64 (bytes into file)
Start of section headers: 769424 (bytes into file)
Flags: 0x0
Size of this header: 64 (bytes)
Size of program headers: 56 (bytes)
Number of program headers: 7
Size of section headers: 64 (bytes)
Number of section headers: 37
Section header string table index: 36