----- Original Message -----
Hi
I have not seen anything like this before, so I cannot really help you with
the problem. You should however be aware the in this case Crash is built as
a 32-bit executable and must be built in that way to work properly. So you
should look for missing 32-bit libraries.
That's right -- in this case the 32-bit ncurses-devel library is missing.
But there may be other libraries required. I've transposed a bunch of notes
that I have w/respect to building x86 (or arm as a target) binaries on an
x86_64 host:
09/26/12 Fedora 17: i686 packages installed to build x86 crash on x86_64:
# rpm -qa | grep i686
glibc-2.15-57.fc17.i686
ncurses-libs-5.9-4.20120204.fc17.i686
libgcc-4.7.0-5.fc17.i686
zlib-static-1.2.5-7.fc17.i686
ncurses-devel-5.9-4.20120204.fc17.i686
nss-softokn-freebl-3.13.5-1.fc17.i686
glibc-devel-2.15-57.fc17.i686
#
09/07/11 If gdb won't build with target=X86 (or AMM) on Fedora 14 and 15, even with
glibc-devel.i686 and libgcc.i686 installed:
crash build fails because of an ncurses issue:
...
checking for library containing waddstr... no
configure: WARNING: no enhanced curses library found; disabling TUI
checking for library containing tgetent... no
configure: error: no termcap library found
make[3]: *** [configure-gdb] Error 1
make[2]: *** [all] Error 2
gdb build failed: gdb-7.0/gdb/libgdb.a does not exist
After doing this:
sudo yum install ncurses-libs.i686
sudo yum install ncurses.i686
F15 yum couldn't find ncurses-devel.i686 and ncurses.i686
so I did this:
rpm -ivh /root/ncurses-5.8-2.20110319.fc15.i686.rpm
rpm -ivh /root/ncurses-devel-5.8-2.20110319.fc15.i686.rpm
It would not use "incompatible" /usr/lib64/libz.a in the final link.
Tried this:
sudo yum install zlib.i686 (zlib-static used by x86_64 doesn't exist
for i686, but that didn't work because -lz seems to still try the
/usr/lib64 version.
So I downloaded zlib-static.i686 from Fedora (it *does* exist), and
manually installed the static /lib/libz.a. And that worked:
gcc -m32 -o ../../crash ../../crashlib.a libgdb.a \
../readline/libreadline.a ../opcodes/libopcodes.a ../bfd/libbfd.a
../libiberty/libiberty.a ../libdecnumber/libdecnumber.a -lncurses
-lm ../libiberty/libiberty.a gnulib/libgnu.a -lz -ldl -rdynamic
On F15, I did it right:
rpm -ivh /root/zlib-static-1.2.5-3.fc15.i686.rpm
The other libraries for -ldl and -lm were found, here showing the
difference between a 32-bit and 64-bit binary:
# ldd ./crash
linux-gate.so.1 => (0x005fa000)
libncurses.so.5 => /lib/libncurses.so.5 (0x00cff000)
libtinfo.so.5 => /lib/libtinfo.so.5 (0x005b6000)
libm.so.6 => /lib/libm.so.6 (0x003ef000)
libdl.so.2 => /lib/libdl.so.2 (0x00af0000)
libc.so.6 => /lib/libc.so.6 (0x00883000)
/lib/ld-linux.so.2 (0x002c5000)
# ldd /usr/bin/crash
linux-vdso.so.1 => (0x00007fffb3e85000)
libncurses.so.5 => /lib64/libncurses.so.5 (0x0000003b06000000)
libtinfo.so.5 => /lib64/libtinfo.so.5 (0x0000003b01800000)
libz.so.1 => /lib64/libz.so.1 (0x0000003af8400000)
libm.so.6 => /lib64/libm.so.6 (0x00007f3b6503a000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f3b64e36000)
libc.so.6 => /lib64/libc.so.6 (0x00007f3b64a9a000)
/lib64/ld-linux-x86-64.so.2 (0x00007f3b652bf000)
#
09/20/10 RHEL6 yum installation procedure required to build X86/ARM on X86_64:
# yum groupinstall "Compatibility libraries"
# yum install glibc-devel.i686
# cc -m32 ... (works OK)
# yum install ncurses-devel.i686 zlib-devel.i686
# make target=X86
...
Hope this helps,
Dave
Jan
Jan Karlsson
Senior Software Engineer
System Assurance
Sony Mobile Communications
Tel: +46 703 062 174
jan.karlsson(a)sonymobile.com
sonymobile.com
-----Original Message-----
From: Yu Chen [mailto:chenyu105@gmail.com]
Sent: den 4 juli 2014 06:40
To: ext-mika.1.westerberg(a)nokia.com; Karlsson, Jan; Fänge, Thomas
Subject: crash-utility(a)redhat.com, anderson(a)redhat.com
Hi all!
I am trying to compile crash-7.0.7 on x86_64 host for arm.
(x86 binary to analyze ARM dumpfiles)
Here's the failure information:
-bash-4.1$ make target=arm
TARGET: ARM
CRASH: 7.0.7
GDB: 7.6
...
checking for gcc... gcc
checking for C compiler default output file name... a.out checking whether
the C compiler works... yes checking whether we are cross compiling... no
checking for objcopy... objcopy checking for objdump... objdump checking for
readelf... readelf checking for arm-elf-linux-cc... no checking for
arm-elf-linux-gcc... no checking for arm-elf-linux-c++... no checking for
arm-elf-linux-g++... no checking for arm-elf-linux-cxx... no checking for
arm-elf-linux-gxx... no checking for arm-elf-linux-gcc... no checking for
arm-elf-linux-gcj... no
...
checking for library containing waddstr... no
configure: WARNING: no enhanced curses library found; disabling TUI checking
for library containing tgetent... no
configure: error: no termcap library found
make[3]: *** [configure-gdb] Error 1
make[2]: *** [all] Error 2
crash build failed
make[1]: *** [gdb_merge] Error 1
make: *** [all] Error 2
I thought the reason for above error message was due to lack of termcap
library. However, the termcap library could be found on my host machine:
-bash-4.1$ find . -name "*termcap*"
./libtermcap.so.2
./libtermcap.so.2.0.8
-bash-4.1$ pwd
/lib64
-bash-4.1$ uname -a
Linux localhost.localdomain 2.6.32-220.el6.x86_64 #1 SMP Mon Sep 3
07:34:44 EDT 2012 x86_64 x86_64 x86_64 GNU/Linux
After I copyed x86_64 libtermcap.a into /lib64 ,the error message still
exist.
I am confused if crash should be cross compiled in this situation?
Or is there any step I should take before compile crash?
Many thanks !
--
Crash-utility mailing list
Crash-utility(a)redhat.com
https://www.redhat.com/mailman/listinfo/crash-utility