"неопределенная ссылка на` strnstr '"при установке cminpack - PullRequest
0 голосов
/ 12 февраля 2011

Я устанавливаю cminpack 1.1.2 на чистую установку Ubuntu 10.10.

При запуске sudo make в папке cminpack возникает следующая ошибка: 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 ]

3 голосов
/ 14 февраля 2011

strnstr - это нестандартная функция.В частности, он не включен в Glibc.Кто бы ни написал genf77test.c, он не тестировал его на Linux / glibc ...

1 голос
/ 14 февраля 2011

strnstr не является стандартным C; насколько я вижу, это предусмотрено в семействе BSD UNIX.

Тем не менее, если единственная проблема в вашей компиляции состоит в том, что вы можете предоставить ее прототип 1 и добавить в файлы для компиляции тот, который содержит его реализацию (например, этот ).

<ч />
  1. На самом деле, вам это может даже не понадобиться: если компиляция дойдет до стадии компоновки и не получится просто там, вы можете решить добавить только реализацию strnstr.
...