安装cminpack时“未定义引用`strnstr'”

时间:2011-02-12 19:36:00

标签: c ubuntu install string.h

我正在安装cminpack 1.1.2安装Ubuntu 10.10。

在cminpack文件夹中运行sudo make时,以下错误发生在52%:

[ 52%] Building C object examples/CMakeFiles/genf77tests.dir/genf77tests.c.o
/usr/lib/cminpack-1.1.2/examples/genf77tests.c: In function ‘main’:
/usr/lib/cminpack-1.1.2/examples/genf77tests.c:44: warning: assignment makes pointer from integer without a cast
/usr/lib/cminpack-1.1.2/examples/genf77tests.c:86: warning: comparison between pointer and integer
Linking C executable genf77tests
CMakeFiles/genf77tests.dir/genf77tests.c.o: In function `main':
genf77tests.c:(.text+0xb5): undefined reference to `strnstr'
genf77tests.c:(.text+0x2a9): undefined reference to `strnstr'
collect2: ld returned 1 exit status
make[2]: *** [examples/genf77tests] Error 1
make[1]: *** [examples/CMakeFiles/genf77tests.dir/all] Error 2
make: *** [all] Error 2

我查看了genf77tests.c内部,#include <string.h>存在,所以我不明白找到strnstr时出现问题的原因。

我有什么办法可以解决这个问题吗?

2 个答案:

答案 0 :(得分:3)

strnstr是非标准功能。具体而言,它不包含在Glibc中。编写genf77test.c的人没有在Linux / glibc上测试它......

答案 1 :(得分:1)

strnstr不是标准C;据我所知,它是在BSD UNIX系列上提供的。

但是,如果您的编译中唯一的问题是您可以提供其原型 1 ,并添加到要编译的文件中,其中包含其实现(例如this one


  1. 实际上,您可能甚至不需要它:如果编译进入链接阶段并且在那里失败,您可以解决仅仅执行strnstr