i.MX6 交叉编译glibc-2.20

1、下载

我用的是glibc-2.20.tar.gz,官网地址:http://www.gnu.org/software/libc/

2、解压及准备

我所有操作都放在/tmp目录下。

  • 移动到/tmp目录下
  • 解压
  • 创建glibc_config目录作为配置目录
  • 创建glibc_build目录作为编译后目标文件放置目录

/tmp$ cp /mnt/share/glibc-2.20.tar.gz .
/tmp$ tar zxvf glibc-2.20.tar.gz
/tmp$ mkdir glibc_config
/tmp$ mkdir glibc_build

3、配置构建

构建配置需要在单独的目录中构建,而不能直接在源码目录下构建,这就是创建glibc_config目录的原因。

  • 进入glibc_config/
  • 执行配置文件

/tmp$ cd glibc_config/
/tmp/glibc_config$ …/glibc-2.20/configure CC="/opt/poky/1.7/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-gcc" CFLAGS="-march=armv7-a -mthumb-interwork -mfloat-abi=hard -mfpu=neon -mtune=cortex-a7" --prefix="/tmp/glibc_build" --host=“arm-poky-linux-gnueabi”

4、编译及安装

make
make install

即将编译后的结果安装到目录/tmp/glibc_build下。

5、遇到问题

在编译时遇到以下问题:
1、configure: error: you must configure in a separate build directory
这个意思就是要在单独的目录下进行配置构建而不能直接在glibc源码所在的目录进行构建。
解决方法:
创建一个单独的目录用于配置构建,如步骤3。

2、Can’t locate … in @INC (you may need to install the … module)

  • Can’t locate Getopt/Std.pm in @INC (you may need to install the Getopt::Std module)
  • Can’t locate File/Find.pm in @INC (you may need to install the File::Find module)
    经查找资料发现是交叉编译工具中的perl工具却少文件所致。
    Can’t locate Getopt/Std.pm即在perl目录下的Getopt子目录缺少Std.pm文件。
    Can’t locate File/Find.pm即在perl目录下的File子目录缺少Find.pm文件。
    解决方法:
    (1)找到编译工具中的perl目录。
    (2)查找Getopt/Std.pm文件的源码。登陆网站: https://metacpan.org/。 搜索Getopt/Std.pm。选择Getopt::Std。点击Source (raw)。即可查找到源码:https://metacpan.org/source/XSAWYERX/perl-5.28.0/lib/Getopt/Std.pm 。
    Find.pm的源码查找方法相同。
    (3)在Getopt子目录下创建Std.pm文件,并粘贴源码。File/Find.pm解决方法相同。

你可能感兴趣的:(Linux应用开发,glibc,交叉编译)