首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对strlcpy和strlcat的引用未定义

对strlcpy和strlcat的引用未定义
EN

Stack Overflow用户
提问于 2021-05-03 02:46:55
回答 1查看 1.2K关注 0票数 0

我使用strlcpy和strlcat来代替strncat/cpy;但是,无论何时我去编译它,它都会不断地在我的GCC -o Project Project.c中显示以下错误:

Undefined reference to strlcpy; Undefined reference to 'strlcat'我的代码:

代码语言:javascript
运行
复制
#include <bsd/string.h>
strlcpy(path, ARTICLEPATH, sizeof(ARTICLEPATH));
strlcat(path, ARTICLEPATH, sizeof(path));

我已经将该库添加到我的文件中,但它似乎继续抛出错误:#include <bsd/string.h>

还有什么我需要做的吗?或者,除了使用使用空字节终止的strncpy之外,还有另一种选择吗?

编辑:作为背景,我在ubuntu 20.04

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-03 04:26:18

正如(某种程度上)在libbsd man page中解释的那样,您需要链接libbsd库以及包含头文件。因此,在链接时将-lbsd添加到命令行中。对于一个简单的程序,您可能会这样做

代码语言:javascript
运行
复制
gcc -o prog prog.c -lbsd

请注意,选项的顺序在这里很重要,请参阅Why does the order in which libraries are linked sometimes cause errors in GCC?如果您在命令行中将-lbsd放在源文件之前,它可能无法工作。

你问这个问题的方式表明你可能对头和库之间的区别以及每个头和库所扮演的角色有些困惑。您可能想要阅读What's the difference between a header file and a library?

(这几乎是when I use strlcpy function in c the compilor give me an error的复制品,但这个问题更通用,而且一些答案并不特别适用于Ubuntu,所以我认为单独的答案会很有用。)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67360010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档