ARM技术william hill官网
直播中

安德森大

8年用户 1275经验值
擅长:接口/总线/驱动
私信 关注
[问答]

在windows7上编译rtt遇到了arm-none-eabi-gcc的问题如何解决呢

最近在windows7上编译rtt,考虑到用cygwin上的git,svn同步代码方便,希望把scons编译方式也加到cygwin上,遇到了一个
sh: arm-none-eabi-gcc: command not found
的问题
具体步骤如下:
1 安装cygwin,选择full install(带有python)
2 安装scons (python setup.py install)
3 安装arm-2012.09-63-arm-none-eabi-i686-mingw32.tar.bz2 (tar -jxvf arm-2012.09-63-arm-none-eabi-i686-mingw32.tar.bz2)
4 将arm-2012.09-63-arm-none-eabi-i686-mingw32解压后的路径export到PATH里
在wh44b0下做scons提示如下
$ scons scons: Reading SConscript files ... /opt/CrossCompile/CodeSourcery/Sourcery_CodeBench_for_ARM_EABI/bin:/cygdrive/c/linux/rt-thread/tool/arm-2012.09/bin/:/home/dillon.min/bin:/cygdrive/c/software/jd-gui-0.3.5.windows:/usr/local/bin:/usr/bin:/cygdrive/c/Program Files (x86)/CodeSourcery/Sourcery_CodeBench_Lite_for_ARM_EABI/bin:/cygdrive/c/Windows/system32:/cygdrive/c/Windows:/cygdrive/c/Windows/System32/Wbem:/cygdrive/c/Windows/System32/WindowsPowerShell/v1.0:/cygdrive/c/Old-Pc-bak/d/share/android-sdk_r10-windows/tools:/cygdrive/c/Old-Pc-bak/d/software/java反编译:/cygdrive/c/Program Files/7-Zip:/cygdrive/c/Python25:/cygdrive/c/Python25/Scripts:/cygdrive/c/Program Files (x86)/Beyond Compare 3:/usr/lib/lapack scons: done reading SConscript files. scons: Building targets ... scons: building associated VariantDir targets: build arm-none-eabi-gcc -o build/application.o -c -mcpu=arm720t -D__FLASH_BUILD__ -O2 -Ibuild -I. -I/cygdrive/c/linux/rt-thread/rt-2457-git -I/cygdrive/c/linux/rt-thread/rt-2457-git/build -I/cygdrive/c/linux/rt-thread/rt-2457-git/include -I/cygdrive/c/linux/rt-thread/rt-2457-git/libcpu/arm/s3c44b0 -I/cygdrive/c/linux/rt-thread/rt-2457-git/libcpu/arm/common application.c sh: arm-none-eabi-gcc: command not found scons: *** [build/application.o] Error 127 scons: building terminated because of errors.
但是我手动执行
arm-none-eabi-gcc -o build/application.o -c -mcpu=arm720t -DFLASH_BUILD -O2 -Ibuild -I. -I/cygdrive/c/linux/rt-thread/rt-2457-git -I/cygdrive/c/linux/rt-thread/rt-2457-git/build -I/cygdrive/c/linux/rt-thread/rt-2457-git/include -I/cygdrive/c/linux/rt-thread/rt-2457-git/libcpu/arm/s3c44b0 -I/cygdrive/c/linux/rt-thread/rt-2457-git/libcpu/arm/common application.c
是可以把application.o生成到build下的

可能问题就出在scons里对arm-none-eabi-gcc查找上出了问题,在building.py里加了一个 print os.environ[‘PATH’]
说明gcc的工具是在路径里的,就比较迷惑了

回帖(8)

laisvl

2022-6-27 14:29:32
scons用的路径是和系统中的PATH变量指向的路径是不一样的,需要在rtconfig.py中指定
举报

安德森大

2022-6-27 14:30:05
arm-none-eabi-gcc找不到的问题解决了,但是又遇到一个问题
需要把CYGPATH这个环境变量设置进去,否则arm-none-eabi-gcc识别不了cygwin下的头文件路径

在bash下,做下列命令就可以了
export CYGPATH=c:/cygwin/bin/cygpath
再手动做编译
arm-none-eabi-gcc -o build/application.o -c -mcpu=arm720t -DFLASH_BUILD -O2 -Ibuild -I. -I/cygdrive/c/linux/rt-thread/rt-2457-git -I/cygdrive/c/linux/rt-thread/rt-2457-git/build -I/cygdrive/c/linux/rt-thread/rt-2457-git/include -I/cygdrive/c/linux/rt-thread/rt-2457-git/libcpu/arm/s3c44b0 -I/cygdrive/c/linux/rt-thread/rt-2457-git/libcpu/arm/common application.c
是可以编译

但是做scons就报错
$ scons
scons: Reading SConscript files …
scons: done reading SConscript files.
scons: Building targets …
scons: building associated VariantDir targets: build
arm-none-eabi-gcc -o build/application.o -c -mcpu=arm720t -DFLASH_BUILD -O2 -Ibuild -I. -I/cygdrive/c/linux/rt-thread/rt-2457-git -I/cygdrive/c/l/cygdrive/c/linux/rt-thread/rt-2457-git/include -I/cygdrive/c/linux/rt-thread/rt-2457-git/libcpu/arm/s3c44b0 -I/cygdrive/c/linux/rt-thread/rt-2457-gi
application.c: fatal error: rtthread.h: No such file or directory
compilation terminated.
scons: * [build/application.o] Error 1
scons: building terminated because of errors.

找不到rtthread.h

不知道怎么把CYGPATH这个环境变量和scons里调用arm-none-eabi-gcc这个过程糅合到一起?
举报

laisvl

2022-6-27 14:30:17
没弄明白lz为什么会纠缠在CYGPATH上。

rtconfig.py中,去修改EXEC_PATH路径去。
举报

安德森大

2022-6-27 14:30:25
引用: 没弄明白lz为什么会纠缠在CYGPATH上。

rtconfig.py中,去修改EXEC_PATH路径去。


最近在windows7上编译rtt,考虑到用cygwin上的git,svn同步代码方便,希望把scons编译方式也加到cygwin上
主要是这个目的,修改,编译,上传,下载都在cygwin上干
举报

laisvl

2022-6-27 14:30:42
那么就在rtconfig.h中写入正确的工具链目录。

CYGPATH不知道用来干什么的
举报

vinww特烦恼

2022-6-27 14:30:49
注意这是交叉编译,arm-none-eabi-gcc 不应该使用 cygwin下的头文件…… 如果用了,很有可能出错而且很难 debug……

由此那个 CYGPATH 应该是无关的……

我自己倒是没有在 cygwin 下用 scons 弄过,貌似 cygwin 自带的 python 版本比较老,用着不舒心……
举报

安德森大

2022-6-27 14:31:06
我觉得不是arm-none-eabi-gcc的问题,我试过在cygwin下单独编译一个c文件,只要设置了CYGPATH环境变量,就可以正常编译,但是到了scons里面,就不行了,后来debug了一番,也没找到原因为什么scons调用的arm-none-eabi-gcc找不到头文件,就放弃了。

我觉得用Makfile方式编译linux应该是没有问题的话,一直没有实验过,回头有空试试看。
举报

laisvl

2022-6-27 14:31:32
原来Code Sourcery会专门处理这个环境变量。

这个最本质的原因是:
scons在进行编译时(例如调用编译器gcc或其它的编译器),它会把环境变量完全的重新创建一个,这个环境变量环境仅包含最最基本的配置。通过这样的方式,编译器将会得到一个最干净的环境变量环境。然后在这个环境下,scons会把脚本中配置的环境应用上去。

所以,你在外面设置的PATH、CYGPATH等等的,传递到编译器时,统统没有了。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分