链接错误:未定义的引用静态库

时间:2012-03-06 19:01:36

标签: linux linker ld static-linking speex

如果有人有信息,我需要你对这个问题的帮助。

我为speex1.2rc1(ARM架构)配置了xscale-elf,然后执行了makemake 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,我也在Makefile中尝试了行LDFLAGS += /usr/local/lib/libspeex.a -lm但又出现了另一个错误(也在链接中):

/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 :(得分:0)

./configure --host=xscale-elf

您没有告诉您正在编译此内容的主机,但考虑到ld的路径,您似乎正在进行交叉编译。如果是这样,您的主机可能 xscale-elf(但可能是i686-linux-gnu或其他类似的主机。)

您需要了解 host target 之间的区别,并使用适当的编译器和speex1重建您的--target=xscale-elf(无论是什么)

此外,将用于 taget 的库安装到/usr/local/lib中是错误的要做的事情。