Проблема заключается в использовании вами опции -std=c99
.Поскольку strndup()
не является частью C99, и вы просите компилятор перейти в режим соответствия стандартам, он не предоставит прототип для него.Конечно, он по-прежнему ссылается, потому что он есть в вашей библиотеке C.
Хотя вы и можете gcc
уговорить его предоставить, указав макросы функций сами, я бы сказал,находиться в режиме соответствия C99 и , например, запросить расширения GNU.gcc
уже предоставляет режим для этого, который решит ваше предупреждение: -std=gnu99
.