我正在尝试编译一个源代码,这个源代码最初是为 FreeBSD
而既然 strlcpy不包含在linux GlibC中。 ,我现在停在这个阶段。
GCC建议我可以使用 strncpy 但我不想实际改变源代码。
我需要重新编译我的LibC吗?
希望得到任何帮助。
移植BSD应用程序的最佳解决方案是 libbsd而它已经被打包到大多数系统中。
在基于Debian的系统中,开发包的名字是 libbsd-dev
.
你可以通过在你的CFLAGS中加入以下内容来编译未经修改的BSD源代码。-DLIBBSD_OVERLAY -I/usr/include/bsd
,并与 -lbsd
.
然而,与其硬编码这些值,你应该使用 pkg-config
随着 libbsd-overlay
包,如果你打算发布你的构建系统。
你可以从 https:/github.comfreebsdfreebsdblobmastersyslibkernstrlcpy.c。 并将其添加到你的源代码中,并进行2次修改。
$ diff strlcpy.c strlcpy.c.orig
20c20
< //__FBSDID("$FreeBSD$");
---
> __FBSDID("$FreeBSD$");
23c23
< //#include <sys/libkern.h>
---
> #include <sys/libkern.h>
我已经在Ubuntu 18.04上用gcc 7.5.0成功编译了这个函数。