ошибка компоновки: неопределенная ссылка на статическую библиотеку - PullRequest
0 голосов
/ 06 марта 2012

Мне нужна ваша помощь по этой проблеме, если у кого-то есть информация.

Я настроил speex1.2rc1 для xscale-elf (архитектура ARM), затем выполнил make и make install. Итак, я получил libspeex.a в /usr/local/lib с скомпилированным libogg.a. но когда я связываю библиотеку с моей программой (добавив LDFLAGS += -lspeex -lm) и пытаюсь скомпилировать, я получаю эту ошибку:

/usr/lib/gcc/xscale-elf/3.4.3/../../../../xscale-elf/bin/ld: cannot find -lspeex
collect2: ld returned 1 exit status
make: *** [exe0] Error 1

Я передал ./configure параметры как:

./configure --host=xscale-elf

Вероятно, что компоновщик не может видеть libspeex.a, и я также попробовал строку LDFLAGS += /usr/local/lib/libspeex.a -lm в Makefile, но получил еще одну ошибку (также при компоновке):

/tmp/ccvi7Pns.o(.text+0x179c): In function `main':
: undefined reference to `BlinkC$speex_bits_init'
collect2: ld returned 1 exit status
make: *** [exe0] Error 1

1 Ответ

0 голосов
/ 07 марта 2012
./configure --host=xscale-elf

Вы не сказали, на каком хосте вы это компилируете, но, учитывая путь к вашему ld, кажется, что вы кросс-компилируете. Если это так, ваш хост, скорее всего, не xscale-elf (но, вероятно, i686-linux-gnu или что-то подобное).

Вам необходимо понять разницу между host и target , и перестроить ваш speex1 (что бы это ни было), используя соответствующий компилятор и --target=xscale-elf.

Кроме того, установка библиотек, предназначенных для taget в /usr/local/lib, неправильная вещь, которую нужно сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...