上·志

上下求索,志在千里。

导航

Ubuntu12.04 安装ltib遇到的问题及解决办法

Posted on 2014-05-13 17:19  Shangzhi  阅读(2218)  评论(0编辑  收藏  举报

Ubuntu12.04 安装ltib遇到的问题及解决办法

在ubuntu 12.04 上,参考《在 Ubuntu 12.04 上用 LTIB 编译 linux BSP》,

编译freescale LTIB (L3.0.35_4.1.0_130816_source.tar.gz),还是遇到

了不少问题,下面列出了问题及解决办法(很多都是google得来的)。

1.Error:

Failed building ncurses -- /bin/sh: ./gen: cannot execute binary file

Solution:

Index: dist/lfs-5.1/ncurses/ncurses.spec

===================================================================

RCS file: /sources/ltib/ltib/dist/lfs-5.1/ncurses/ncurses.spec,v

retrieving revision 1.1.1.5

diff -u -r1.1.1.5 ncurses.spec

--- dist/lfs-5.1/ncurses/ncurses.spec   18 Mar 2009 17:53:25 -0000      1.1.1.5

+++ dist/lfs-5.1/ncurses/ncurses.spec   10 Jul 2009 09:19:46 -0000

@@ -31,11 +31,11 @@

 then

 ./configure --prefix=%{_prefix} --host=$CFGHOST --build=%{_build} \

     --with-install-prefix=$RPM_BUILD_ROOT --mandir=%{_mandir} \

-    --with-shared  --without-debug --without-cxx-binding

+    --with-shared  --without-debug --without-cxx-binding --without-ada

 else

 ./configure --prefix=%{_prefix} --host=$CFGHOST --build=%{_build} \

     --with-install-prefix=$RPM_BUILD_ROOT --mandir=%{_mandir} \

-    --without-shared  --without-debug --without-cxx-binding

+    --without-shared  --without-debug --without-cxx-binding --without-ada

 fi

 make -j1 HOSTCC="$BUILDCC"

  

2.Error:

/opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/../lib/gcc/arm-fsl-linux-gnueabi/4.6.2/../../../../arm-fsl-linux-gnueabi/bin/ld: cannot find -lgssapi_krb5

/opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/../lib/gcc/arm-fsl-linux-gnueabi/4.6.2/../../../../arm-fsl-linux-gnueabi/bin/ld: cannot find -lkrb5

/opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/../lib/gcc/arm-fsl-linux-gnueabi/4.6.2/../../../../arm-fsl-linux-gnueabi/bin/ld: cannot find -lk5crypto

collect2: ld returned 1 exit status

make[2]: *** [libftp.la] Error 1

make[2]: *** Waiting for unfinished jobs....

mv -f .deps/sftp-method.Tpo .deps/sftp-method.Plo

make[2]: Leaving directory `/home/zhushangzhi/ltib/rpm/BUILD/gnome-vfs-2.24.1/modules'

make[1]: *** [all-recursive] Error 1

make[1]: Leaving directory `/home/zhushangzhi/ltib/rpm/BUILD/gnome-vfs-2.24.1'

make: *** [all] Error 2

error: Bad exit status from /home/zhushangzhi/ltib/tmp/rpm-tmp.11198 (%build)

 

 

RPM build errors:

    Bad exit status from /home/zhushangzhi/ltib/tmp/rpm-tmp.11198 (%build)

Build time for gnome-vfs: 418 seconds

 

Failed building gnome-vfs

 

Solution:

sudo apt-get remove krb5-multidev

I recently had trouble building gnome-vfs from a Freescale release
of LTIB and thought I'd share my work-around.
 
The problem appeared as a link failure in gnome-vfs-2.24.1/modules/
with an error that "-Bsymbolic" isn't a supported link option by the
cross-compiler.
 
What I found by looking at the configure logs was that the link
flags were being leaked from the build machine into the cross-compilation
by these lines in configure.in:
 
AC_PATH_PROG([KRB5_CONFIG], krb5-config, none, $PATH:/usr/kerberos/bin)
if test "x$KRB5_CONFIG" != "xnone"; then
    GSSAPI_LIBS="`${KRB5_CONFIG} --libs gssapi`"
    GSSAPI_CFLAGS="`${KRB5_CONFIG} --cflags gssapi`"
 
In English, these lines will use the krb5-config to determine the compiler
and linker flags needed to support the kerberos authentication libraries
in a manner similar to pkg-config.
 
I suspect that a patch doctoring the PATH could prevent leakage from, but
I don't need kerberos on my machine, so I solved the issue in an easier
way:
       ~/$ sudo apt-get remove krb5-multidev
 
I hope this helps someone else.

http://web.archiveorange.com/archive/v/zE6LZGvcspFz1vbo4yUn

 

 3.Error:

checking for new_panel in -lpanel... no

configure: error: panel library not found

error: Bad exit status from /home/zhushangzhi/ltib/tmp/rpm-tmp.16521 (%build)

 

RPM build errors:

    Bad exit status from /home/zhushangzhi/ltib/tmp/rpm-tmp.16521 (%build)

Build time for alsa-utils: 22 seconds

 

Failed building alsa-utils

 

Solution:

1). Make sure if libncurses.so exist in ltib/rootfs/usr/lib/, if not, build it with command “$ ./ltib -p ncurse”.

 

2). Create soft link libtinfo.so to libncurse.so

      $ cd rootfs/usr/lib 

     $ sudo ln -s libncurses.so libtinfo.so

 

4.Error:

gcc   fbset.o modes.tab.o lex.yy.o   -o fbset

fbset.o: In function `main':

fbset.c:(.text.startup+0x11c): undefined reference to `yyparse'

lex.yy.o: In function `yylex':

lex.yy.c:(.text+0xf50): undefined reference to `yylval'

collect2: ld returned 1 exit status

make: *** [fbset] Error 1

 

Solution:

Delete ltib/rpm/BUILD/fbset-2.1 , and run ./ltib again.

 

5.Error:

/usr/include/features.h:324:26: fatal error: bits/predefs.h: No such file or directory.

Solution:

sudo apt-get install gcc-multilib

 

6.Error:

/usr/include/gnu/stubs.h:7:27: fatal error: gnu/stubs-32.h: No such file or directory

Solution:

You're missing the 32 bit libc dev package:

On Ubuntu it's called libc6-dev-i386 - do sudo apt-get install libc6-dev-i386. See below for extra instructions for Ubuntu 12.04.

On Red Hat distros, the package name is glibc-devel.i686 (Thanks to David Gardner's comment)

On CentOS 5.8, the package name is glibc-devel.i386 (Thanks to JimKleck's comment)

On CentOS 6.3, the package name is glibc-devel.i686.

On SLES it's called glibc-devel-32bit - do zypper in glibc-devel-32bit


Are you using Ubuntu 12.04? There is a known problem that puts the files in a non standard location. You'll also need to do:

export LIBRARY_PATH=/usr/lib/$(gcc -print-multiarch)

export C_INCLUDE_PATH=/usr/include/$(gcc -print-multiarch)

export CPLUS_INCLUDE_PATH=/usr/include/$(gcc -print-multiarch)

somewhere before you build (say in your .bashrc).


If you are also compiling C++ code, you will also need the 32 bit stdc++ library. If you see this warning:

.... /usr/bin/ld: cannot find -lstdc++ ....

On Ubuntu you will need to do sudo apt-get install g++-multilib

On CentOS 5 you will need to do yum install libstdc++-devel.i386

On CentOS 6 you will need to do yum install libstdc++-devel.i686

Please feel free to edit in the packages for other systems.

 

7.Error:

/usr/include/i386-linux-gnu/bits/mathinline.h error: impossible constraint in 'asm'

Solution:

将上面加进/etc/bash.bashrc 的

export LIBRARY_PATH=/usr/lib/$(gcc -print-multiarch)

export C_INCLUDE_PATH=/usr/include/$(gcc -print-multiarch)

export CPLUS_INCLUDE_PATH=/usr/include/$(gcc -print-multiarch)

 去掉,然后重启ubuntu,重新./ltib即可。