2013-02-14 2 views
0

Я пытаюсь построить libvterm's демо включено в исходное.gcc ошибка связи

У меня есть эта структура папок:

- libvterm/ 
    ... // all sources are here 
    - libvterm.so 
    - vterm.h 
    - demo/ 
    - vshell.c 

В пределах демонстрационного каталога я сделал:

$ gcc -o vshell `pkg-config --cflags --libs glib-2.0 ncurses` vshell.c -L.. -I.. -lvterm 

Я получаю много undefined reference to ошибок, даже после того, как definind -I и -L указать нужный каталог:

/tmp/ccAlNYtQ.o: In function `main': 
vshell.c:(.text+0x24): undefined reference to `initscr' 
vshell.c:(.text+0x29): undefined reference to `noecho' 
vshell.c:(.text+0x2e): undefined reference to `start_color' 
vshell.c:(.text+0x33): undefined reference to `raw' 
vshell.c:(.text+0x38): undefined reference to `stdscr' 
vshell.c:(.text+0x48): undefined reference to `nodelay' 
vshell.c:(.text+0x4d): undefined reference to `stdscr' 
vshell.c:(.text+0x5d): undefined reference to `keypad' 
vshell.c:(.text+0x62): undefined reference to `stdscr' 
vshell.c:(.text+0x6b): undefined reference to `stdscr' 
vshell.c:(.text+0x84): undefined reference to `stdscr' 
vshell.c:(.text+0x8d): undefined reference to `stdscr' 
vshell.c:(.text+0xfb): undefined reference to `init_pair' 
vshell.c:(.text+0x118): undefined reference to `stdscr' 
vshell.c:(.text+0x121): undefined reference to `stdscr' 
vshell.c:(.text+0x141): undefined reference to `stdscr' 
vshell.c:(.text+0x151): undefined reference to `waddch' 
vshell.c:(.text+0x176): undefined reference to `stdscr' 
vshell.c:(.text+0x17e): undefined reference to `wrefresh' 
vshell.c:(.text+0x1a2): undefined reference to `newwin' 
vshell.c:(.text+0x1e1): undefined reference to `mvwprintw' 
vshell.c:(.text+0x1ee): undefined reference to `wrefresh' 
vshell.c:(.text+0x2ac): undefined reference to `wtouchln' 
vshell.c:(.text+0x2b9): undefined reference to `wrefresh' 
vshell.c:(.text+0x2be): undefined reference to `stdscr' 
vshell.c:(.text+0x2c6): undefined reference to `wrefresh' 
vshell.c:(.text+0x2d2): undefined reference to `stdscr' 
vshell.c:(.text+0x2da): undefined reference to `wgetch' 
vshell.c:(.text+0x308): undefined reference to `endwin' 
../libvterm.so: undefined reference to `forkpty' 
../libvterm.so: undefined reference to `g_free' 
../libvterm.so: undefined reference to `has_colors' 
../libvterm.so: undefined reference to `acs_map' 
../libvterm.so: undefined reference to `wchgat' 
../libvterm.so: undefined reference to `beep' 
../libvterm.so: undefined reference to `pair_content' 
../libvterm.so: undefined reference to `COLOR_PAIRS' 
../libvterm.so: undefined reference to `g_realloc' 
../libvterm.so: undefined reference to `g_malloc0' 
../libvterm.so: undefined reference to `wmove' 
collect2: ld returned 1 exit status 

Что мне не хватает?

ответ

3

Try переназначения вашей команды ссылка ...

gcc -o vshell vshell.c -L.. -I.. -lvterm `pkg-config --cflags --libs glib-2.0 ncurses` 

В каком-то момент, гну линкере изменен требовать объекта первым и библиотеками последних/позже.

+1

gcc является компилятором, а не компоновщиком, GNU-компоновщик не является частью gcc, и он всегда документирован, что порядок имеет значение, люди просто ушли с этим неправильно. –

+0

@JonathanWakely: изменено gcc на gnu, это было неправильный стиль; что касается документации, не имеет значения, что написано, что происходит. В какой-то момент это не имело значения, и теперь это происходит. Из-за этого я видел небольшой поток этих вопросов. –

Смежные вопросы