Linux

存檔中的成員 ../lib/lk/liblk.a(debugfs.o) 不是對象,交叉編譯性能時出錯

  • April 18, 2019

當我嘗試為 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

引用自:https://unix.stackexchange.com/questions/223128