iTop4412开发板学习记录
使用自己搭建的开发环境编译iTop4412遇到了许多问题,还有网上有许多大神已经提出了相应的解决方法,将编译过程中遇到的问题及解决方法记录起来,以方便后续查阅。
相关环境:
ubuntu16.04
交叉编译器:arm-linux-gnueabihf (2017)
linux kernel 3.0.15
修改Makefile
将Makefile中的CROSS_COMPILE修改为自己的交叉编译器版本,如本人的如下图所示。
选择对应的.config文件
make zImage
执行make zImage的时候遇到了许多错误,这些错误都是通过百度查找到的解决方法
iTop4412—linux 3.0.15内核编译错误
编译过程遇到的错误
以下内容转载自[https://blog.csdn.net/kuangzuxiaon/article/details/72356335]
ARM开发板:iTop4412
内核版本:linux 3.0.15
交叉编译器:arm-2014.05
主机:Ubuntu 16.04
错误1:
CC arch/arm/mach-exynos/cpu-exynos4.o
{standard input}: Assembler messages:
{standard input}:51: Error: selected processor does not support ARM mode `smc 0'
{standard input}:133: Error: selected processor does not support ARM mode `smc 0'
{standard input}:156: Error: selected processor does not support ARM mode `smc 0'
{standard input}:175: Error: selected processor does not support ARM mode `smc 0'
{standard input}:194: Error: selected processor does not support ARM mode `smc 0'
scripts/Makefile.build:305: recipe for target 'arch/arm/mach-exynos/cpu-exynos4.o' failed
解决办法:http://blog.csdn.net/kuangzuxiaon/article/details/72356335
这里补充一点,如果编译的时候报错,去掉 '+’。
错误2:
TIMEC kernel/timeconst.h
Can't use 'defined(@array)' (Maybe you should just omit the defined()?) at kernel/timeconst.pl line 373.
/home/yang/Work/iTOP4412/src/iTop4412_Kernel_3.0/kernel/Makefile:140: recipe for target 'kernel/timeconst.h' failed
解决办法:将kernel/timeconst.pl中第373行的defined()去掉只留下@val就可以了
错误3:
CC drivers/media/video/samsung/mali_ics/common/mali_kernel_core.o
arm-none-linux-gnueabi-gcc: error: directory: No such file or directory
arm-none-linux-gnueabi-gcc: error: directory": No such file or directory
scripts/Makefile.build:305: recipe for target 'drivers/media/video/samsung/mali_ics/common/mali_kernel_core.o' failed
make[5]: *** [drivers/media/video/samsung/mali_ics/common/mali_kernel_core.o] Error 1
scripts/Makefile.build:441: recipe for target 'drivers/media/video/samsung/mali_ics' failed
make[4]: *** [drivers/media/video/samsung/mali_ics] Error 2
scripts/Makefile.build:441: recipe for target 'drivers/media/video/samsung' failed
解决办法:将…/mali_ics下的Makefile和Makefile.common中的-qv exported 改为:-Eqv “exported|Unversioned directory”
错误4:
CC drivers/media/video/samsung/ump_ics/linux/ump_kernel_linux.o
arm-none-linux-gnueabi-gcc: error: directory: No such file or directory
arm-none-linux-gnueabi-gcc: error: directory": No such file or directory
scripts/Makefile.build:305: recipe for target 'drivers/media/video/samsung/ump_ics/linux/ump_kernel_linux.o' failed
make[5]: *** [drivers/media/video/samsung/ump_ics/linux/ump_kernel_linux.o] Error 1
scripts/Makefile.build:441: recipe for target 'drivers/media/video/samsung/ump_ics' failed
make[4]: *** [drivers/media/video/samsung/ump_ics] Error 2
scripts/Makefile.build:441: recipe for target 'drivers/media/video/samsung' failed
解决方法 : 将…/ump_ics下的Makefile中的-qv exported 改为:-Eqv “exported|Unversioned directory”
错误5:
drivers/video/samsung/s3cfb_main.c: In function 's3cfb_late_resume':
drivers/video/samsung/s3cfb_main.c:464:3: warning: too many arguments for format [-Wformat-extra-args]
printk(KERN_DEBUG, "error on lcd33 regulator enable : lcd_regulator is null\n");
^
drivers/video/samsung/s3cfb_main.c: In function 's3cfb_probe':
drivers/video/samsung/s3cfb_main.c:334:11: warning: 'fbdev[0]' may be used uninitialized in this function [-Wmaybe-uninitialized]
free_irq(fbdev[i]->irq, fbdev[i]);
^
CC drivers/video/samsung/s3cfb_ops.o
drivers/video/samsung/s3cfb_ops.c:54:1: warning: function declaration isn't a prototype [-Wstrict-prototypes]
extern int get_lcd_type();
^
drivers/video/samsung/s3cfb_ops.c: In function 's3cfb_set_win_params':
drivers/video/samsung/s3cfb_ops.c:709:5: warning: "CONFIG_FB_S5P_SOFTBUTTON_UI" is not defined [-Wundef]
#if CONFIG_FB_S5P_SOFTBUTTON_UI
^
In file included from drivers/video/samsung/s3cfb_ops.c:31:0:
drivers/video/samsung/s3cfb_ops.c: In function 's3cfb_check_var':
drivers/video/samsung/s3cfb.h:217:36: error: inlining failed in call to always_inline 'get_fimd_global': function body not available
extern inline struct s3cfb_global *get_fimd_global(int id);
^
drivers/video/samsung/s3cfb_ops.c:700:23: error: called from here
struct s3cfb_global *fbdev = get_fimd_global(win->id);
解决方法 : 删除drivers/video/samsung/s3cfb.h中第217行的关键字inline
我使用的是2017的arm-linux-gnueabihf-版本,编译过程中只遇到了1和5错误