Linux
存檔中的成員 ../lib/lk/liblk.a(debugfs.o) 不是對象,交叉編譯性能時出錯
當我嘗試為 arm 交叉編譯 perf 工具時出現以下錯誤
../lib/lk/liblk.a: member ../lib/lk/liblk.a(debugfs.o) in archive is not an object
我做了什麼 ?
cd stable-kernel/tools/perf make ARCH=arm CROSS_COMPILE=arm-linux-gnu-eabi-gcc
令人驚訝的是,當我真的在那裡看到它的成員時
ar -t ../lib/lk/liblk.a debugfs.o
這種異常行為的原因可能是什麼?
PS:當我為 x86 編譯時,這並沒有發生(通常的方式 make 然後 make install)
那是因為 liblk.a 是為 x86 建構的,並且 makescript 搜尋為 ARM / 所需平台建構的 liblk.a,所以即使當我查看文件類型時 liblk.a 有一個成員,通過命令文件 liblk。它清楚地向我展示了該文件是為 x86 建構的,因此引發了錯誤!
所以為了克服這個問題,我首先為 ARM 建構了 liblk.a,然後我執行了解決問題的 makescript
您必須將 CC 導出到您的 ARM 工具鏈才能將 liblk.a 編譯為 ARM elf 格式。
export CC=arm-linux-gnueabihf-gcc