Неявное объявление strlcpy и strlcat даже с включенным «string.h»

9

GCC выдает ошибку, когда я пытаюсь вызвать функции strlcpyили strlcatв C-файле:

error : implicit declaration of strlcpy
error : implicit declaration of strlcat

В какой библиотеке я могу найти эти функции и их справочную страницу? Я включил, string.hно это ничего не меняет. Я использую Linux Mint 17.2 и gcc 4.8.4

Bilow
источник
1
man strlcpyбудет отображать их справочную страницу. Если у вас есть проблемы с вашим кодом, вам нужно опубликовать код , опубликовать командную строку компилятора и сделать это в переполнении стека, поскольку вопросы программирования здесь не по теме.
Жиль "ТАК - перестань быть злым"
1
strlcpy()и подобное доступно в libc на большинстве вариантов UNIX. Linux - исключение, так как бывшему сопровождающему glibc они не нравились, хотя он не мог объяснить почему или указать на лучшую концепцию. Программное обеспечение, которое портирует на Linux, обычно реализует собственные версии этих функций.
Щил

Ответы:

14

На Ubuntu, Mint и родственников, strlcpyи strlcatдоступны в libbsd-devпакете . Запустить

sudo apt-get install libbsd-dev

Это установит библиотеки, заголовочные файлы и справочные страницы.

Чтобы использовать функции из кода C, добавьте строку

#include <bsd/string.h>

к вашим файлам и добавьте -lbsd, или, более переносимый $(pkg-config --libs libbsd), в вашу gccкомандную строку, чтобы связать библиотеку.

Марк Плотник
источник