解决H616编译路径问题
从错误信息 /usr/lib/gcc/aarch64-linux-gnu/7/../../../../lib/libwiringPi.so: file not recognized: File truncated
可以看出,链接器在尝试使用 libwiringPi.so
时发现文件被截断(损坏)。以下是解决步骤:
1. 验证库文件完整性
检查 libwiringPi.so
文件是否完整:
file /usr/lib/libwiringPi.so
如果输出显示 truncated
或 corrupted
,说明文件已损坏。
2. 重新安装 wiringPi
卸载现有损坏版本并重新安装:
sudo apt-get purge wiringpi # 卸载 sudo rm /usr/lib/libwiringPi.so* # 手动删除残留文件(如果存在) sudo apt-get update sudo apt-get install wiringpi # 重新安装
3. 使用源码安装(推荐)
如果 apt 安装的版本不兼容全志 H616,使用专为 Orange Pi 适配的版本:
git clone https://github.com/orangepi-xunlong/wiringOP.git # 克隆仓库 cd wiringOP ./build clean # 清理 ./build # 编译安装 sudo ldconfig # 更新库缓存
4. 检查库路径
确认新库的路径(通常为 /usr/local/lib
),并确保链接器能找到:
echo "/usr/local/lib" | sudo tee /etc/ld.so.conf.d/local.conf sudo ldconfig
5. 修复编译命令
在 build.sh
脚本中显式指定库路径:
gcc beep.c -o beep -I/usr/local/include -L/usr/local/lib -lwiringPi
或直接链接完整路径:
gcc beep.c -o beep /usr/local/lib/libwiringPi.so
6. 检查文件系统错误
如果问题持续,检查存储设备是否有坏块:
sudo fsck /dev/mmcblk0p2 # 替换为实际分区
7. 验证硬件问题
如果频繁出现文件损坏,可能是 SD 卡故障,尝试更换存储介质。
总结步骤
# 1. 卸载并重装
sudo apt-get purge wiringpi
sudo rm -f /usr/lib/libwiringPi.so*
sudo apt-get install wiringpi# 2. 若无效,源码安装
git clone https://github.com/orangepi-xunlong/wiringOP.git
cd wiringOP
./build clean
./build
sudo ldconfig# 3. 修复编译命令(在 build.sh 中)
gcc beep.c -o beep -lwiringPi -L/usr/local/lib
完成后再运行 ./build.sh
即可解决链接器报错问题。
验证指令: gpio readall
如下方所示,外设库就完成安装了