zl程序教程

您现在的位置是:首页 >  系统

当前栏目

嵌入式linux开发,交叉编译tslib时报错:libtoolize: $pkgltdldir not a directory: `/home/xteda/am335xt3/linux-devkit/

Linux嵌入式开发 not 编译 交叉 Directory 时报
2023-09-14 09:09:33 时间

一、问题描述。

Ubuntu下对tslib源码进行交叉编译出现报错,如下:

ms@ubuntu:~/.../tslib$ ./tslib.sh
libtoolize: $pkgltdldir not a directory: `/home/xteda/am335xt3/linux-devkit/share/libtool'
autoreconf: libtoolize failed with exit status: 1
./tslib.sh: 6: ./tslib.sh: ./configure: not found
make: *** No targets specified and no makefile found.  Stop.
make: Nothing to be done for `install'.
ms@ubuntu:~/.../tslib$ 

二、问题分析。

交叉编译器不匹配问题。编译内核的时候搞用了一个编译器,编译qt的时候又用了另一个交叉编译工具,存在两套编译工具。一个是TI官方提供的编译器  cross-tools-am335x-4.5.3.tar.bz2,用于编译Uboot和Kernel;另一个是专用于编译Qt库的编译器 arm-2009q3.tar.bz2,如果您编译Qt程序或者是Qt库文件,建议使用专门应用于Qt编译的编译器 arm-2009q3.tar.bz2。

三、解决方案。

1、方案一(网上搜寻,未验证):在系统目录中创建 ti-sdk-am335x-evm 文件夹,将linux-devkit 放到这个文件夹中。

mkdir ti-sdk-am335x-evm
cp -rf ./linux-devkit ti-sdk-am335x-evm/
./configure CC=arm-linux-gcc-4.3.5 --build=i686-pc-linux --target=arm-linux --prefix=/opt/tslib-1.3 --host=arm-linux ac_cv_func_malloc_0_nonnull=yes --enable-inputapi=yes
CC=arm-linux-gcc-4.3.5 ./configure --prefix=/opt/tslib-1.3 --host=arm-linux ac_cv_func_malloc_0_nonnull=yes

修改./config.h 将文件中的 #define malloc rpl_malloc 这句话屏蔽。

gedit ./config.h
make
make install

2、方案二:更换交叉编译工具,使用arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2,问题得到解决,编译成功。(此交叉编译工具支持c++11)

附:

--host指定目标机的平台类型。一般格式为CPU类型-操作系统名称。比如,目标机的CPU为arm,操作系统为linux,可以写为--host=arm-linux。

--prefix这是安装路径的前缀,即编译结果放置的位置。默认值是/usr或者/usr/local,交叉编译时不能使用默认值,否则它会覆盖你本机的文件,所以要指定一个路径。比如,可以指定为--prefix=/work/cross/rootfs/usr。