linux内核编译的错误收集

1、arm-eabi-ld:arch/arm/kernel/vmlinux.lds:335: ignoring invalid character `#' in expression

出现这个时一定要去看一下arch/arm/kernel/vmlinux.lds它的335行,因为看后是这样的

*/
//#define PLAT_PHYS_OFFSET     UL(0x50000000)
/*

#号前面有个//,这是在头文件中注释了的,而它不被识别,导致编译内核失败,所以注释用"//"可能还是不太安全

 2、WARNING: at drivers/gpio/gpiolib.c:101 gpio_ensure_requested+0x50/0x19c()
autorequest GPIO-24
Modules linked in:
[<c003ee00>] (unwind_backtrace+0x0/0xf8) from [<c0054858>] (warn_slowpath_common+0x4c/0x64)
[<c0054858>] (warn_slowpath_common+0x4c/0x64) from [<c0054904>] (warn_slowpath_fmt+0x30/0x40)
[<c0054904>] (warn_slowpath_fmt+0x30/0x40) from [<c022f6ac>] (gpio_ensure_requested+0x50/0x19c)
[<c022f6ac>] (gpio_ensure_requested+0x50/0x19c) from [<c022f99c>] (gpio_direction_output+0xa8/0x22c)
[<c022f99c>] (gpio_direction_output+0xa8/0x22c) from [<c02976fc>] (s3c64xx_spi_setup+0x14c/0x26c)
[<c02976fc>] (s3c64xx_spi_setup+0x14c/0x26c) from [<c0295f5c>] (spi_setup+0x40/0xe8)
[<c0295f5c>] (spi_setup+0x40/0xe8) from [<c0296284>] (spi_add_device+0x90/0x148)
[<c0296284>] (spi_add_device+0x90/0x148) from [<c02963b0>] (spi_new_device+0x74/0xac)
[<c02963b0>] (spi_new_device+0x74/0xac) from [<c0296408>] (spi_match_master_to_boardinfo+0x20/0x40)
[<c0296408>] (spi_match_master_to_boardinfo+0x20/0x40) from [<c029651c>] (spi_register_master+0xf4/0x15c)
[<c029651c>] (spi_register_master+0xf4/0x15c) from [<c001fed8>] (s3c64xx_spi_probe+0x378/0x488)
[<c001fed8>] (s3c64xx_spi_probe+0x378/0x488) from [<c0264670>] (platform_drv_probe+0x18/0x1c)
[<c0264670>] (platform_drv_probe+0x18/0x1c) from [<c02632ec>] (driver_probe_device+0x78/0x198)
[<c02632ec>] (driver_probe_device+0x78/0x198) from [<c0263498>] (__driver_attach+0x8c/0x90)
[<c0263498>] (__driver_attach+0x8c/0x90) from [<c0262b3c>] (bus_for_each_dev+0x60/0x8c)
[<c0262b3c>] (bus_for_each_dev+0x60/0x8c) from [<c0262390>] (bus_add_driver+0xb0/0x254)
[<c0262390>] (bus_add_driver+0xb0/0x254) from [<c0263a5c>] (driver_register+0x6c/0x154)
[<c0263a5c>] (driver_register+0x6c/0x154) from [<c0264a90>] (platform_driver_probe+0x18/0x9c)
[<c0264a90>] (platform_driver_probe+0x18/0x9c) from [<c0033380>] (do_one_initcall+0x34/0x17c)
[<c0033380>] (do_one_initcall+0x34/0x17c) from [<c00083b0>] (kernel_init+0xa0/0x150)
[<c00083b0>] (kernel_init+0xa0/0x150) from [<c0039818>] (kernel_thread_exit+0x0/0x8)

这是因为SPI的片选管脚在使用前没有申请造成的,在 arch/arm/mach-s3c64xx/mach-smdk6410.c 中的 static void __init smdk6410_machine_init(void)中增加以下代码

 gpio_request(s3c64xx_spi1_csinfo.line, NULL); //加入此段代码
 
 s3c64xx_spi_set_info(0,0,1);
 s3c64xx_spi_set_info(1,0,1);


3、List of all partitions:
1f00            1024 mtdblock0  (driver?)
1f01            5120 mtdblock1  (driver?)
1f02          204800 mtdblock2  (driver?)
enter s3c64xx_setup_sdhci1_cfg_gpio
1f03         1886208 mtdblock3  (driver?)
No filesystem could mount root, tried:  yaffs2
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(31,2)

这个问题是由于nand驱动没有移植好。

4、devtmpfs: error mounting -2,Failed to execute /linuxrc.  Attempting defaults...
这个问题是由于yaffs2没有移植好,需要用老版的yaffs2才行,移植原开发板的yaffs2到新内核中

移值中的问题:

fs/yaffs2/yaffs_vfs.c:440: warning: initialization from incompatible pointer type
fs/yaffs2/yaffs_vfs.c:441: warning: initialization from incompatible pointer type
fs/yaffs2/yaffs_vfs.c:445: warning: initialization from incompatible pointer type
fs/yaffs2/yaffs_vfs.c:447: warning: initialization from incompatible pointer type
fs/yaffs2/yaffs_vfs.c:480: error: unknown field 'write_super' specified in initializer
fs/yaffs2/yaffs_vfs.c:480: warning: initialization from incompatible pointer type
fs/yaffs2/yaffs_vfs.c: In function 'yaffs_evict_inode':
fs/yaffs2/yaffs_vfs.c:875: error: implicit declaration of function 'end_writeback'
fs/yaffs2/yaffs_vfs.c: In function 'yaffs_do_sync_fs':
fs/yaffs2/yaffs_vfs.c:2205: error: 'struct super_block' has no member named 's_dirt'
fs/yaffs2/yaffs_vfs.c:2216: error: 'struct super_block' has no member named 's_dirt'
fs/yaffs2/yaffs_vfs.c:2218: error: 'struct super_block' has no member named 's_dirt'
fs/yaffs2/yaffs_vfs.c: In function 'yaffs_mtd_put_super':
fs/yaffs2/yaffs_vfs.c:2514: error: 'struct mtd_info' has no member named 'sync'
fs/yaffs2/yaffs_vfs.c:2515: error: 'struct mtd_info' has no member named 'sync'
fs/yaffs2/yaffs_vfs.c: In function 'yaffs_touch_super':
fs/yaffs2/yaffs_vfs.c:2526: error: 'struct super_block' has no member named 's_dirt'
fs/yaffs2/yaffs_vfs.c: In function 'yaffs_internal_read_super':
fs/yaffs2/yaffs_vfs.c:2702: error: 'struct mtd_info' has no member named 'erase'
fs/yaffs2/yaffs_vfs.c:2703: error: 'struct mtd_info' has no member named 'read'
fs/yaffs2/yaffs_vfs.c:2704: error: 'struct mtd_info' has no member named 'write'
fs/yaffs2/yaffs_vfs.c:2705: error: 'struct mtd_info' has no member named 'read_oob'
fs/yaffs2/yaffs_vfs.c:2706: error: 'struct mtd_info' has no member named 'write_oob'
fs/yaffs2/yaffs_vfs.c:2707: error: 'struct mtd_info' has no member named 'block_isbad'
fs/yaffs2/yaffs_vfs.c:2708: error: 'struct mtd_info' has no member named 'block_markbad'
fs/yaffs2/yaffs_vfs.c:2732: error: 'struct mtd_info' has no member named 'erase'
fs/yaffs2/yaffs_vfs.c:2733: error: 'struct mtd_info' has no member named 'block_isbad'
fs/yaffs2/yaffs_vfs.c:2734: error: 'struct mtd_info' has no member named 'block_markbad'
fs/yaffs2/yaffs_vfs.c:2734: error: 'struct mtd_info' has no member named 'read'
fs/yaffs2/yaffs_vfs.c:2734: error: 'struct mtd_info' has no member named 'write'
fs/yaffs2/yaffs_vfs.c:2736: error: 'struct mtd_info' has no member named 'read_oob'
fs/yaffs2/yaffs_vfs.c:2736: error: 'struct mtd_info' has no member named 'write_oob'
fs/yaffs2/yaffs_vfs.c:2757: error: 'struct mtd_info' has no member named 'erase'
fs/yaffs2/yaffs_vfs.c:2757: error: 'struct mtd_info' has no member named 'read'
fs/yaffs2/yaffs_vfs.c:2757: error: 'struct mtd_info' has no member named 'write'
fs/yaffs2/yaffs_vfs.c:2759: error: 'struct mtd_info' has no member named 'read_oob'
fs/yaffs2/yaffs_vfs.c:2759: error: 'struct mtd_info' has no member named 'write_oob'
fs/yaffs2/yaffs_vfs.c:2967: error: implicit declaration of function 'd_alloc_root'
fs/yaffs2/yaffs_vfs.c:2967: warning: assignment makes pointer from integer without a cast
fs/yaffs2/yaffs_vfs.c:2976: error: 'struct super_block' has no member named 's_dirt'

struct mtd_info定义的函数前都加了下划线,如mtd->sync应改为mtd->_sync

if (mtd->_sync)
   mtd->_sync(mtd);
yaffs_trace(YAFFS_TRACE_OS, " erase %p", mtd->_erase);
yaffs_trace(YAFFS_TRACE_OS, " read %p", mtd->_read);
yaffs_trace(YAFFS_TRACE_OS, " write %p", mtd->_write);
yaffs_trace(YAFFS_TRACE_OS, " readoob %p", mtd->_read_oob);
yaffs_trace(YAFFS_TRACE_OS, " writeoob %p", mtd->_write_oob);
yaffs_trace(YAFFS_TRACE_OS, " block_isbad %p", mtd->_block_isbad);
yaffs_trace(YAFFS_TRACE_OS, " block_markbad %p", mtd->_block_markbad);

下面的错误 

fs/yaffs2/yaffs_vfs.c:480: error: unknown field 'write_super' specified in initializer
fs/yaffs2/yaffs_vfs.c:875: error: implicit declaration of function 'end_writeback'
fs/yaffs2/yaffs_vfs.c:2205: error: 'struct super_block' has no member named 's_dirt'
fs/yaffs2/yaffs_vfs.c:2216: error: 'struct super_block' has no member named 's_dirt'
fs/yaffs2/yaffs_vfs.c:2218: error: 'struct super_block' has no member named 's_dirt'
fs/yaffs2/yaffs_vfs.c:2514: error: 'struct mtd_info' has no member named 'sync'
fs/yaffs2/yaffs_vfs.c:2515: error: 'struct mtd_info' has no member named 'sync'
fs/yaffs2/yaffs_vfs.c:2526: error: 'struct super_block' has no member named 's_dirt'
fs/yaffs2/yaffs_vfs.c:2967: error: implicit declaration of function 'd_alloc_root'
fs/yaffs2/yaffs_vfs.c:2976: error: 'struct super_block' has no member named 's_dirt'

s/yaffs2/yaffs_vfs.c:480: error: unknown field 'write_super'specified in initializer
   在include/linux/fs.h中的struct super_operations定义添加void (*write_super) (struct super_block *);  struct super_block中添加unsigned char  s_dirt;

end_writeback换成clear_inode,d_alloc_root换成d_make_root

yaffs_mtdif1.c:  ‘MTD_OOB_AUTO’未声明,换成MTD_OPS_AUTO_OOB

 

5、VFS: Cannot open root device "mtdblock2" or unknown-block(31,2): error -19
Please append a correct "root=" boot option; here are the available  

-19是因为没加yaffs2,在内核中添加yaffs2支持就可以了

待续。。。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值