[求解]交叉编译busybox错误

内核编译和嵌入式产品的设计与开发
回复
头像
Jarson
帖子: 2371
注册时间: 2008-07-21 9:44
来自: 深圳
联系:

[求解]交叉编译busybox错误

#1

帖子 Jarson » 2009-11-03 0:18

代码: 全选

fhc2007@fhc2007-desktop:~$ arm-linux-gcc -v
Reading specs from /usr/local/arm/3.4.1/bin/../lib/gcc/arm-linux/3.4.1/specs
Configured with: /opt/crosstool/crosstool-0.28/build/arm-linux/gcc-3.4.1-glibc-2.3.2/gcc-3.4.1/configure --target=arm-linux --host=i686-host_pc-linux-gnu --prefix=/opt/crosstool/arm-linux/gcc-3.4.1-glibc-2.3.2 --with-float=soft --with-headers=/opt/crosstool/arm-linux/gcc-3.4.1-glibc-2.3.2/arm-linux/include --with-local-prefix=/opt/crosstool/arm-linux/gcc-3.4.1-glibc-2.3.2/arm-linux --disable-nls --enable-threads=posix --enable-symvers=gnu --enable-__cxa_atexit --enable-languages=c,c++ --enable-shared --enable-c99 --enable-long-long
Thread model: posix
gcc version 3.4.1
编译出错信息:

代码: 全选

coreutils/fsync.c: In function `fsync_main':
coreutils/fsync.c:27: error: `O_NOATIME' undeclared (first use in this function)
coreutils/fsync.c:27: error: (Each undeclared identifier is reported only once
coreutils/fsync.c:27: error: for each function it appears in.)
make[1]: *** [coreutils/fsync.o] 错误 1
make: *** [coreutils] 错误 2

代码: 全选

fhc2007@fhc2007-desktop:~/mini2440/busybox-1.15.2$ cat -n coreutils/fsync.c 
     1  /* vi: set sw=4 ts=4: */
     2  /*
     3   * Mini fsync implementation for busybox
     4   *
     5   * Copyright (C) 2008 Nokia Corporation. All rights reserved.
     6   *
     7   * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
     8   */
     9  #include "libbb.h"
    10
    11  /* This is a NOFORK applet. Be very careful! */
    12
    13  int fsync_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
    14  int fsync_main(int argc UNUSED_PARAM, char **argv)
    15  {
    16          int status;
    17          int opts;
    18
    19          opts = getopt32(argv, "d"); /* fdatasync */
    20          argv += optind;
    21          if (!*argv) {
    22                  bb_show_usage();
    23          }
    24	
    25		status = EXIT_SUCCESS;
    26		do {
    27			int fd = open3_or_warn(*argv, O_NOATIME | O_NOCTTY | O_RDONLY, 0);
    28	
    29			if (fd == -1) {
    30				status = EXIT_FAILURE;
    31				continue;
    32			}
    33			if ((opts ? fdatasync(fd) : fsync(fd))) {
    34				//status = EXIT_FAILURE; - do we want this?
    35				bb_simple_perror_msg(*argv);
    36			}
    37			close(fd);
    38		} while (*++argv);
    39	
    40		return status;
    41	}
使用得busybox版本是1.15.2,在主机(host)上编译是通过的。主机的编译环境是:

代码: 全选

fhc2007@fhc2007-desktop:~/mini2440/busybox-1.15.2$ gcc -v
使用内建 specs。
目标:i486-linux-gnu
配置为:../src/configure -v --enable-languages=c,c++,fortran,objc,obj-c++,treelang --prefix=/usr --enable-shared --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --enable-nls --with-gxx-include-dir=/usr/include/c++/4.2 --program-suffix=-4.2 --enable-clocale=gnu --enable-libstdcxx-debug --enable-objc-gc --enable-mpfr --enable-targets=all --enable-checking=release --build=i486-linux-gnu --host=i486-linux-gnu --target=i486-linux-gnu
线程模型:posix
gcc 版本 4.2.4 (Ubuntu 4.2.4-1ubuntu4)
头像
Jarson
帖子: 2371
注册时间: 2008-07-21 9:44
来自: 深圳
联系:

Re: [求解]交叉编译busybox错误

#2

帖子 Jarson » 2009-11-03 10:00

自己顶一下,望大虾们给个意见,不胜感激。
toddbmg
帖子: 62
注册时间: 2007-08-09 0:23
来自: 广东
联系:

Re: [求解]交叉编译busybox错误

#3

帖子 toddbmg » 2009-11-03 17:12

1.手动设置Makefile 的ARCH = arm,CROSS_COMPILE = arm-linux-
2.make menuconfig build选项中指定采用共享库
3.copy ARM编译器中 libc*.so libm*.so ld*.so到rootbox的lib中。并保持链接关系。

make ;make install
OK
头像
Jarson
帖子: 2371
注册时间: 2008-07-21 9:44
来自: 深圳
联系:

Re: [求解]交叉编译busybox错误

#4

帖子 Jarson » 2009-11-03 18:25

找不到rootbox目录哦 :em20
toddbmg
帖子: 62
注册时间: 2007-08-09 0:23
来自: 广东
联系:

Re: [求解]交叉编译busybox错误

#5

帖子 toddbmg » 2009-11-03 21:35

rootbox的意思是指你生成的busybox目录 :em04

一般make 完后,make install 后,会在busybox目录下生成一个_install,这个就你要东东啰。。。
头像
Jarson
帖子: 2371
注册时间: 2008-07-21 9:44
来自: 深圳
联系:

Re: [求解]交叉编译busybox错误

#6

帖子 Jarson » 2009-11-03 22:20

toddbmg 写了:rootbox的意思是指你生成的busybox目录 :em04

一般make 完后,make install 后,会在busybox目录下生成一个_install,这个就你要东东啰。。。
呵呵,明白意思了。
回复