[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: