blob: 590343d40841843bc44e4aee24f3982e33513387 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
semantic: 0.924
instruction: 0.918
graphic: 0.915
assembly: 0.901
device: 0.897
other: 0.883
vnc: 0.878
socket: 0.860
network: 0.847
KVM: 0.830
boot: 0.830
mistranslation: 0.810
static build with curses fails if requires -ltinfo
On my system (amd64 Debian wheezy/sid) static ncurses build requires -ltinfo:
$ pkg-config --libs --static ncurses
-lncurses -ltinfo
$ ../../configure --enable-curses --static
# Actually this fails on line
if compile_prog "" "$curses_lib" ; then
# with
ERROR
ERROR: User requested feature curses
ERROR: configure was not able to find it
ERROR
# but if we add -ltinfo to this line check succeds
...
static build yes
...
$ make
...
...
CC i386-softmmu/hw/i386/../kvm/pci-assign.o
LINK i386-softmmu/qemu-system-i386
../os-posix.o: In function `change_process_uid':
/home/vadim/soft/qemu/os-posix.c:205: warning: Using 'initgroups' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking # and many alike warnings
...
../ui/curses.o: In function `curses_cursor_position':
/home/vadim/soft/qemu/ui/curses.c:137: undefined reference to `COLS'
/home/vadim/soft/qemu/ui/curses.c:137: undefined reference to `LINES'
/home/vadim/soft/qemu/ui/curses.c:138: undefined reference to `stdscr'
/home/vadim/soft/qemu/ui/curses.c:139: undefined reference to `curs_set'
../ui/curses.o: In function `curses_calc_pad':
/home/vadim/soft/qemu/ui/curses.c:68: undefined reference to `stdscr'
/home/vadim/soft/qemu/ui/curses.c:69: undefined reference to `stdscr'
... and so on
I tried to build the very minimal static qemu executable. Actual configure line I tried first was
../../configure --target-list=i386-softmmu --disable-sdl --disable-virtfs --disable-vnc --disable-xen --disable-brlapi --disable-bluez --disable-slirp --disable-kvm --disable-user --disable-vde --disable-vhost-net --disable-spice --disable-libiscsi --disable-smartcard --disable-usb-redir --disable-guest-agent --audio-drv-list= --audio-card-list= --enable-curses --static
and the errors was the same.
I can reproduce this issue.
I tried
./configure --static --target-list="x86_64-softmmu" --enable-curse
I get
ERROR
ERROR: User requested feature curses
ERROR: configure was not able to find it
ERROR
Please try qemu.git/master.
If the error still occurs, please attach config.log.
The problem may have to do with the way ./configure compile_prog and pkg_config interact with the --static option. The --static option is supposed to set up LDFLAGS -static and pkg-config --static.
The curses probing code tries building -lncurses, -lcurses, and finally pkg-config ncurses. Try the following change:
curses_list="$($pkg_config --libs ncurses 2>/dev/null):-lncurses:-lcurses"
That will probe pkg-config ncurses first.
I ran into the same issue on FreeBSD, and just posted my patch to the qemu-devel list. It's the same solution stefanha describes above.
(On FreeBSD we have an additional issue; we don't ship the .pc file with the ncurses port right now. I just hacked one together to include -ltinfo in Libs.private.)
Patch had been included here:
http://git.qemu.org/?p=qemu.git;a=commitdiff;h=cfeda5f4b8710b6ba14
So I think we can now mark this ticket as "Fix released".
|