尝试make
使用 ta-lib 库 (ta-lib-0.4.0-src.tar.gz) 我收到以下错误:
/home/me/ta-lib/src/.libs/libta_lib.so: undefined reference to `sinh'
/home/me/ta-lib/src/.libs/libta_lib.so: undefined reference to `sincos'
/home/me/ta-lib/src/.libs/libta_lib.so: undefined reference to `ceil'
...
对于大量的数学函数。
失败的命令如下所示:
gcc -g -O2 -o .libs/ta_regtest (... .o files) -L/home/me/ta-lib/src \
/home/me/ta-lib/src/.libs/libta_lib.so -lm -lpthread -ldl
有问题的库(ta_lib)如下所示:
objdump -TC libta_lib.so | grep " D \*UND\*"
0000000000000000 D *UND* 0000000000000000 sinh
0000000000000000 D *UND* 0000000000000000 sincos
0000000000000000 D *UND* 0000000000000000 ceil
...
对于相同的数学函数(grep 排除已定义的函数和具有“w”(可能是弱)标志的函数)
一张地图列出了包括的图书馆,其中包括:
LOAD /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libm.so
libm.so 中定义的符号列表(objdump -TC)包括:
000000000001a320 w iD .text 0000000000000020 GLIBC_2.2.5 ceil
这是未定义的引用之一(它们都在那里)。我无法确定 GLIBC_2.2.5 的含义。
为什么加载程序没有找到这些功能?
我的系统如下所示:
$ uname -a
Linux mynode 3.5.0-17-generic #28-Ubuntu SMP Tue Oct 9 19:31:23 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux