Newlib 安装问题

Newlib 安装问题

我正在尝试使用 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" ... 即用空格替换第一个 '='。

相关内容