我试图在ARM处理器上运行LAME mp3编码器。我已经编写了一个简单的测试代码来初始化和关闭编码器,以测试我是否正确设置了环境,但我无法成功构建项目。我使用arm-linux-gnueabihf-gcc工具链交叉编译了arm linux的源代码lame代码(成功?)。我使用以下配置来构建静态库:
export PATH=$PATH:/root/gcc-linaro-arm/bin
echo $PATH
export CC=arm-linux-gnueabihf-gcc
export CXX=arm-linux-gnueabihf-g++
export LD=arm-linux-gnueabihf-ld
export AR=arm-linux-gnueabihf-ar
export NM=arm-linux-gnueabihf-nm
export RANLIB=arm-linux-gnueabihf-ranlib
./configure CC=arm-linux-gnueabihf-gcc --prefix=/root/x-compile/deps --
enable-static --disable-shared --host=arm-linux-gnueabihf
make
make install
有一些警告,但据我所知,它是正确构建的。但是,当我在使用静态库中定义的函数的DS-5环境中构建项目时,链接器不成功。我将在下面发布一个代码段:
Invoking: GCC C Linker 4 [arm-linux-gnueabihf]
arm-linux-gnueabihf-gcc -L/root/DS-5-Workspace/mp3codec/shared_lib -o
"mp3codec" ./src/mp3codec.o -lmp3lame
/root/DS-5-Workspace/mp3codec/shared_lib/libmp3lame.a(vbrquantize.o): In
function `guess_scalefac_x34':
vbrquantize.c:(.text+0xa68): undefined reference to `__log10f_finite'
/root/DS-5-Workspace/mp3codec/shared_lib/libmp3lame.a(lame.o): In
function `lame_init_params':
lame.c:(.text+0xdce): undefined reference to `cos'
lame.c:(.text+0x1026): undefined reference to `cos'
lame.c:(.text+0x10f0): undefined reference to `cos'
lame.c:(.text+0x110c): undefined reference to `cos'
makefile:31: recipe for target 'mp3codec' failed
lame.c:(.text+0x1214): undefined reference to `__pow_finite'
lame.c:(.text+0x12f4): undefined reference to `__powf_finite'
/root/DS-5-Workspace/mp3codec/shared_lib/libmp3lame.a(psymodel.o): In
function `init_s3_values':
psymodel.c:(.text+0x5ac): undefined reference to `__exp_finite'
它继续讨论静态库中各种文件中未定义的引用。我读了一下,似乎问题可能是如何调用链接器,但是当我告诉它构建时,这是由IDE完成的,所以我不确定它是否不在我的手中。我也不确定是否正确构建了跛脚的静态库。我已尝试从上面的终端构建它,并使用DS-5中的源文件。我在两种方式中都得到了一个静态库对象,但是当我尝试构建依赖于静态库的项目时,有关未定义引用的相同问题。
任何人都可以让我了解我的问题,或告诉我纠正它们的步骤吗?
感谢您的帮助,
的Bogdan