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


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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.