各位好,求帮忙看看这个编译问题是怎么回事,谢谢:
我从TI官网下载了335x最新的uboot源码和工具链:http://www.ti.com/tool/PROCESSOR-SDK-AM335X
并且按照官网上找到的关于uboot的指导手册操作编译,操作过程如下(工具链路径我使用了绝对路径,没有配置PATH变量):
make CROSS_COMPILE=/home/llf/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf- distclean
rm -rf am335x_evm/
make CROSS_COMPILE=/home/llf/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf- O=am335x_evm am335x_evm_defconfig
make CROSS_COMPILE=/home/llf/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf- O=am335x_evm
最后这一步编译会出现下面的问题:
../arch/arm/lib/memset.S: Assembler messages:
../arch/arm/lib/memset.S:46: Error: thumb conditional instruction should be in IT block — `stmiage ip!,{r1,r3,r8,lr}'
../arch/arm/lib/memset.S:47: Error: thumb conditional instruction should be in IT block — `stmiage ip!,{r1,r3,r8,lr}'
../arch/arm/lib/memset.S:48: Error: thumb conditional instruction should be in IT block — `stmiage ip!,{r1,r3,r8,lr}'
../arch/arm/lib/memset.S:49: Error: thumb conditional instruction should be in IT block — `stmiage ip!,{r1,r3,r8,lr}'
../arch/arm/lib/memset.S:51: Error: thumb conditional instruction should be in IT block — `ldmfdeq sp!,{r8,pc}'
../arch/arm/lib/memset.S:56: Error: thumb conditional instruction should be in IT block — `stmiane ip!,{r1,r3,r8,lr}'
../arch/arm/lib/memset.S:57: Error: thumb conditional instruction should be in IT block — `stmiane ip!,{r1,r3,r8,lr}'
../arch/arm/lib/memset.S:59: Error: thumb conditional instruction should be in IT block — `stmiane ip!,{r1,r3,r8,lr}'
../arch/arm/lib/memset.S:106: Error: thumb conditional instruction should be in IT block — `stmiane ip!,{r1,r3}'
../arch/arm/lib/memset.S:108: Error: thumb conditional instruction should be in IT block — `strne r1,[ip],#4'
../arch/arm/lib/memset.S:114: Error: thumb conditional instruction should be in IT block — `strbne r1,[ip],#1'
../arch/arm/lib/memset.S:115: Error: thumb conditional instruction should be in IT block — `strbne r1,[ip],#1'
../arch/arm/lib/memset.S:117: Error: thumb conditional instruction should be in IT block — `strbne r1,[ip],#1'
../arch/arm/lib/memset.S:123: Error: thumb conditional instruction should be in IT block — `strblt r1,[ip],#1'
../arch/arm/lib/memset.S:124: Error: thumb conditional instruction should be in IT block — `strble r1,[ip],#1'
make[2]: *** [arch/arm/lib/memset.o] 错误 1
make[1]: *** [arch/arm/lib] 错误 2
源码完全是从官网下载下来的,没有一点改动,是否是我哪里配置的有问题呢?还请各位大神帮忙看看这个问题如何解决,谢谢。
yongqing wang:
在CMAKE配置中的参数CMAKE_CXX_FLAGS_RELEASE 后添加”-Wa,-mimplicit-it=thumb”,依然存在问题可考虑在CMAKE_CXX_FLAGES后也添加此内容。
LONGFEI LI1:
回复 yongqing wang:
大侠,能不能指导下CMAKE配置文件在什么地方?对这个完全无认识,求指点,谢谢。
LONGFEI LI1:
顶,求解答。。。。。
Eggsy Pang:
回复 LONGFEI LI1:
先 export PATH=$HOME/gcc-linaro-4.9-2015.05-x86_64_arm-linux-gnueabihf/bin:$PATH再 运行$ make CROSS_COMPILE=arm-linux-gnueabihf- distclean$ make CROSS_COMPILE=arm-linux-gnueabihf- O=am335x_evm am335x_evm_defconfig $ make CROSS_COMPILE=arm-linux-gnueabihf- O=am335x_evm三个步骤,会成功吗?
LONGFEI LI1:
回复 Eggsy Pang:
Eggsy Pang,你好。
如此执行同样不行的,不过我下载的最新的SDK里面工具链的版本已经是2016年的了:
llf@llf-virtual-machine:~/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin$ pwd/home/llf/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin
llf@llf-virtual-machine:~/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin$ echo $PATH/home/llf/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin:/opt/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/arm-arago-linux-gnueabi/bin
三步执行,其中前两个命令无问题,最后一个命令执行后依然会出现这个问题:
../arch/arm/lib/memset.S: Assembler messages:../arch/arm/lib/memset.S:46: Error: thumb conditional instruction should be in IT block — `stmiage ip!,{r1,r3,r8,lr}'../arch/arm/lib/memset.S:47: Error: thumb conditional instruction should be in IT block — `stmiage ip!,{r1,r3,r8,lr}'../arch/arm/lib/memset.S:48: Error: thumb conditional instruction should be in IT block — `stmiage ip!,{r1,r3,r8,lr}'../arch/arm/lib/memset.S:49: Error: thumb conditional instruction should be in IT block — `stmiage ip!,{r1,r3,r8,lr}'../arch/arm/lib/memset.S:51: Error: thumb conditional instruction should be in IT block — `ldmfdeq sp!,{r8,pc}'../arch/arm/lib/memset.S:56: Error: thumb conditional instruction should be in IT block — `stmiane ip!,{r1,r3,r8,lr}'../arch/arm/lib/memset.S:57: Error: thumb conditional instruction should be in IT block — `stmiane ip!,{r1,r3,r8,lr}'../arch/arm/lib/memset.S:59: Error: thumb conditional instruction should be in IT block — `stmiane ip!,{r1,r3,r8,lr}'../arch/arm/lib/memset.S:106: Error: thumb conditional instruction should be in IT block — `stmiane ip!,{r1,r3}'../arch/arm/lib/memset.S:108: Error: thumb conditional instruction should be in IT block — `strne r1,[ip],#4'../arch/arm/lib/memset.S:114: Error: thumb conditional instruction should be in IT block — `strbne r1,[ip],#1'../arch/arm/lib/memset.S:115: Error: thumb conditional instruction should be in IT block — `strbne r1,[ip],#1'../arch/arm/lib/memset.S:117: Error: thumb conditional instruction should be in IT block — `strbne r1,[ip],#1'../arch/arm/lib/memset.S:123: Error: thumb conditional instruction should be in IT block — `strblt r1,[ip],#1'../arch/arm/lib/memset.S:124: Error: thumb conditional instruction should be in IT block — `strble r1,[ip],#1'make[2]: *** [arch/arm/lib/memset.o] 错误 1make[1]: *** [arch/arm/lib] 错误 2make[1]:正在离开目录 `/home/llf/ti_335x/board-support/u-boot-2017.01+gitAUTOINC+9fd60700db-g9fd60700db/am335x_evm'make: *** [sub-make] 错误 2
LONGFEI LI1:
回复 LONGFEI LI1:
顶~顶~顶~
希望大神能看到,帮忙解决问题。。。。。。
LONGFEI LI1:
回复 LONGFEI LI1:
继续。。。。
TI的攻城狮们,有没有人可以用最新的sdk测试下看看是否确实存在这个问题,还是我的编译环境配置的有问题。。。。
libo zhang:
回复 LONGFEI LI1:
哥们,问一下,你的那个问题解决了没?
TI中文支持网