Déclaration implicite de strlcpy et strlcat même avec "string.h" inclus

9

Gcc génère une erreur lorsque j'essaie d'appeler les fonctions strlcpyou strlcatdans un fichier C:

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

Dans quelle bibliothèque puis-je trouver ces fonctions et leur page de manuel? J'ai inclus string.hmais ça ne change rien. J'utilise Linux Mint 17.2 et gcc 4.8.4

Bilow
la source
1
man strlcpyaffichera leur page de manuel. Si vous rencontrez des problèmes avec votre code, vous devez publier le code , publier la ligne de commande du compilateur et le faire sur Stack Overflow car les questions de programmation sont hors sujet ici.
Gilles 'SO- arrête d'être méchant'
1
strlcpy()et similaires sont disponibles dans libc sur la plupart des variantes UNIX. Linux est une exception car un ancien mainteneur de la glibc ne les aimait pas même s'il n'était pas en mesure d'expliquer pourquoi ou de pointer vers un meilleur concept. Les logiciels qui portent sur Linux implémentent généralement leurs propres versions de ces fonctions.
schily

Réponses:

14

Sur Ubuntu, Mint et ses proches, strlcpyet strlcatsont disponibles dans le libbsd-devpackage . Courir

sudo apt-get install libbsd-dev

Cela installera les bibliothèques, les fichiers d'en-tête et les pages de manuel.

Pour utiliser les fonctions du code C, ajoutez la ligne

#include <bsd/string.h>

à vos fichiers et ajoutez -lbsd, ou le plus portable $(pkg-config --libs libbsd), à votre gccligne de commande pour lier la bibliothèque.

Mark Plotnick
la source