Implizite Deklaration von strlcpy und strlcat auch mit "string.h"

9

Gcc gibt einen Fehler aus, wenn ich versuche, die Funktionen strlcpyoder strlcatin einer C-Datei aufzurufen :

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

In welcher Bibliothek finde ich diese Funktionen und ihre Manpage? Ich habe aufgenommen, string.haber es ändert nichts. Ich verwende Linux Mint 17.2 und gcc 4.8.4

Bilow
quelle
1
man strlcpywird ihre Manpage anzeigen. Wenn Sie Probleme mit Ihrem Code haben, müssen Sie den Code veröffentlichen , die Compiler-Befehlszeile veröffentlichen und dies im Stapelüberlauf tun, da Programmierfragen hier nicht zum Thema gehören.
Gilles 'SO - hör auf böse zu sein'
1
strlcpy()und ähnliche sind in libc für die meisten UNIX-Varianten verfügbar. Linux ist eine Ausnahme, da ein ehemaliger glibc-Betreuer sie nicht mochte, obwohl er nicht erklären konnte, warum oder auf ein besseres Konzept hinweisen konnte. Software, die auf Linux portiert, implementiert normalerweise eigene Versionen dieser Funktionen.
schily

Antworten:

14

Auf Ubuntu, Mint und Verwandten strlcpyund strlcatsind im libbsd-devPaket verfügbar . Lauf

sudo apt-get install libbsd-dev

Dadurch werden die Bibliotheken, Header-Dateien und Manpages installiert.

Fügen Sie die Zeile hinzu, um die Funktionen aus dem C-Code zu verwenden

#include <bsd/string.h>

zu Ihren Dateien hinzufügen -lbsdund $(pkg-config --libs libbsd)zu Ihrer gccBefehlszeile hinzufügen , um die Bibliothek zu verknüpfen.

Mark Plotnick
quelle