0%

高拓 SDK 在 Linux 环境下编译问题解决

高拓 SDK Linux 环境下编译问题解决

debug 过程

  1. 编译app_wifi_cmd.c 出现 execv: No such file or directory,开始以为是 Makefile 问题,后面核对了下Makefile,没看到问题。
  1. 接着怀疑是 nds32le-elf/bin/as不存在,但执行ls -alh /opt/nds32le-elf-mculib-v3/bin/../lib/gcc/nds32le-elf/4.9.3/../../../../nds32le-elf/bin/as,发现文件是存在的。
  1. 猜测是这个文件无法执行。为了验证,直接执行as --version,发现是可以显示版本的,但执行/opt/nds32le-elf-mculib-v3/bin/../lib/gcc/nds32le-elf/4.9.3/../../../../nds32le-elf/bin/as, 也显示 execv: No such file or directory,基本确定是/nds32le-elf/bin/as 无法执行。

  2. 执行file /opt/nds32le-elf-mculib-v3/bin/../lib/gcc/nds32le-elf/4.9.3/../../../../nds32le-elf/bin/as查看/nds32le-elf/bin/as文件格式。发现是动态连接的,基本可以确定是少了某种连接库引起的。

  3. find /lib -name ld-linux.so.2在Linux上查找ld-linux.so.2,果然没有。

  4. Google 搜索ubuntu install ld-linux.so.2, 发现一个有用链接。根据文章内容,执行sudo apt-get install libc6-i386

  5. 在SDK根目录再次尝试编译make all,发现提示缺少libz.so.1,继续 Google libz.so.1,发现一个有用链接。按照提示,安装sudo apt-get install lib32z1

  6. 再次尝试编译,编译通过。

总结:

  1. 出现这个问题,是由于在64位环境下,缺少动态库引起的,按照出错提示,Google 相应的库,按照需求安装就OK了。
  2. 所用到的指令集
1
2
sudo apt-get install libc6-i386
sudo apt-get install lib32z1