項目場景:
自Linux 4.8起,傳統的GPIO sysfs接口被棄用。libgpiod操作gpio的方式感覺更加方便。 但是單板上好像沒裝這個工具,又到了熟悉的交叉編譯環節(痛苦)。
問題描述
按照流程裝完libgpiod,自信地去交叉編譯程序,果然,還是不能太相信自己。在編譯時出現 libgpiod.so: file not recognized: file format not recognized 問題???

原因分析:
英文提示是文件格式不對。 于是file libgpiod.so.3.0.0 查看動態庫,發現居然是x86架構的。
注:不要file libgpiod.so, 它是個軟鏈接。 利用 ls libgpiod.* -l 查看軟鏈接的文件為 libgpiod.so.3.0.0

沒辦法,只能重裝了。再一次安裝的時候,發現之前運行腳本./autogen.sh 的時候 沒有指定–host參數,host不指定就會按照build來定義(哭死)。
解決:
./configure host=arm-none-linux-gnueabi --enable-tools=yes --prefix= $(安裝絕對路徑)
隨便回顧回顧 交叉編譯的參數配置
./configure --build=編譯平臺 --host=運行平臺 --target=目標平臺 [各種編譯參數]
#--host: 運行主機, 表示我們把這個編譯好的 gcc 在什么樣的平臺下運行。host不指定就會按照build來定義一般是工具鏈的前綴。可以arm-linux-gnueabihf-gcc -v查看
#--build: 編譯主機 表示編譯程序的平臺是什么。可以利用 gcc -v 查看
#--target: 該參數的目的是讓配置程序知道這個軟件被編譯后使用來處理什么平臺上的文件的。
host !=build的時候編譯才是交叉編譯。否則就是正常編譯。