Declaração implícita de strlcpy e strlcat, mesmo com "string.h" incluído

9

O Gcc lança um erro quando tento chamar as funções strlcpyou strlcatem um arquivo C:

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

Em qual biblioteca posso encontrar essas funções e sua página de manual? Eu incluí, string.hmas isso não muda nada. Estou executando o Linux Mint 17.2 e o gcc 4.8.4

Bilow
fonte
1
man strlcpyexibirá sua página de manual. Se você estiver tendo problemas com o seu código, precisará postar o código , publicar a linha de comando do compilador e fazê-lo no Stack Overflow, pois as questões de programação não são abordadas aqui.
Gilles 'SO- stop be evil'
1
strlcpy()e similares estão disponíveis na libc na maioria das variantes do UNIX. O Linux é uma exceção, pois um ex-mantenedor da glibc não gostava deles, embora não fosse capaz de explicar o porquê ou apontar para um conceito melhor. O software que é portado para Linux geralmente implementa versões próprias dessas funções.
schily 21/09/2015

Respostas:

14

No Ubuntu, Mint, e parentes, strlcpye strlcatestão disponíveis no libbsd-devpacote . Corre

sudo apt-get install libbsd-dev

Isso instalará as bibliotecas, os arquivos de cabeçalho e as páginas de manual.

Para usar as funções do código C, adicione a linha

#include <bsd/string.h>

aos seus arquivos e adicione -lbsd, ou o mais portátil $(pkg-config --libs libbsd), à sua gcclinha de comando para vincular a biblioteca.

Mark Plotnick
fonte