我正在尝试使用 CodeSourcery 的 arm-none-eabi-XXX 交叉编译 ARM 设备的 Newlib 库,但遇到了一些问题。运行 ./configure 和/或 make 时,它显示无法找到 arm-none-eabi-cc 的消息。我的路径设置正确。我可以以 root 和用户身份从终端调用 arm-none-eabi-xxx。
命令:
sudo ./configure --target=arm-none-eabi --prefix=/usr/local/arm-eabi/bin --disable-newlib-supplied-syscalls
结果:
checking for arm-none-eabi-cc... no
checking for arm-none-eabi-gcc... no
checking for arm-none-eabi-c++... no
checking for arm-none-eabi-g++... no
sudo make:
/bin/sh: arm-none-eabi-cc: command not found
但路径设置正确...
kris@caspinol /usr/local/newlib $ arm
arm2hpdl arm-none-eabi-c++ arm-none-eabi-elfedit arm-none-eabi-gcov arm-none-eabi-ld arm-none-eabi-ranlib arm-none-eabi-sprite
arm-none-eabi-addr2line arm-none-eabi-cc arm-none-eabi-g++ arm-none-eabi-gdb arm-none-eabi-nm arm-none-eabi-readelf arm-none-eabi-strings
arm-none-eabi-ar arm-none-eabi-c++filt arm-none-eabi-gcc arm-none-eabi-gdbtui arm-none-eabi-objcopy arm-none-eabi-run arm-none-eabi-strip
arm-none-eabi-as arm-none-eabi-cpp arm-none-eabi-gcc-4.6.3 arm-none-eabi-gprof arm-none-eabi-objdump arm-none-eabi-size
kris@caspinol /usr/local/newlib $ arm
我在配置阶段是否遗漏了一些参数?
非常感谢您的帮助。
提前致谢
答案1
很抱歉这么晚才回复。我刚刚遇到了这个问题,我尝试了网上大家建议的所有方法来解决它(因此我遇到了这个问题)。问题似乎是“sudo”没有传递环境变量;$PATH 被(清除并)重新初始化,因此在发出 sudo make install 之前设置 $PATH 是徒劳的。
我试过 man sudo... 没用。我还试过 man su,结果发现 su -m(或 su -e)。这些命令似乎没有像宣传的那样有效。最后我发现你可以...
sudo env "PATH=$PATH" make install && echo "Success!"
如果您没有看到“成功!”消息,那么可能是因为您需要运行 make install 两次!newlib 发行版中似乎有一个错误,由于缺少目录而导致错误;这是在第二次尝试时创建的。我不知道为什么没有修复。我的解决方案是...
make CFLAGS_FOR_TARGET="-D__IEEE_BIG_ENDIAN -D__IEEE_BYTES_LITTLE_ENDIAN -D__BUFSIZ__=64" && sudo env="PATH=$PATH" make install && sudo env="PATH=$PATH" make install && echo "Success!"
答案2
很抱歉重启僵尸线程,但这仍然是 Ubuntu 20.04 LTS 上为 arm-none-eabi 交叉编译的 newlib-4.1.0 sudo make install 的问题。@user309044 提供的解决方案只是一张票,但不是 ... sudo env="PATH=$PATH" ... 正确的语法是 ... sudo env "PATH=$PATH" ... 即用空格替换第一个 '='。