Re: ошибка при компиляции
On 2009.07.04 at 11:50:57 +0700, Ivan Petrov wrote:
> Попытался откомпилировать программу для проверки баланса билайн-модема,
> которая приведена на http://ru.gentoo-wiki.com/wiki/MF626
> запускаю компиляцию:
> $ g++ -lusb balans.c -o balans
>
> получаю:
>
> /tmp/cca4sxGE.o: In function `main':
> balans.c:(.text+0xb1e): undefined reference to `libiconv_open'
> balans.c:(.text+0xb5d): undefined reference to `libiconv'
> balans.c:(.text+0xc97): undefined reference to `libiconv_close'
> collect2: ld returned 1 exit status
Выглядит это так, что откуда-то берется неправлиьный iconv.h
В принципе, существуют две реализации iconv - в системной библиотеке,
и в отдельной libiconv. Вторую приходится использованть на системах, где
родного iconv нет, или он неработоспособен - на FreeBSD или древнем
солярисе. (в 10-ке уже и в solaris-е нет никакой необходимости в
libiconv).
Если функция iconv в системной библиотеке так и называется iconv, то в
libiconv, во избежание конфликта с системами, имеющими неработоспособный
iconv в libc (напр. Solaris 8) iconv определен как макрос,
раскрывающийся в libiconv, аналогично и iconv_open, iconv_close.
Пожоже, что в каталог с исходниками программы какой-то нехороший человек
подложил iconv.h от libiconv. Правильный iconv.h должен располагаться
в /usr/include и принадлежать пакету libc6-dev
Reply to: