微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Linux - 功能测试宏和动态链接

如何解决Linux - 功能测试宏和动态链接

C 标准库包含一个方法 strerror_r (https://linux.die.net/man/3/strerror_r)。

根据在编译时定义的“功能测试宏”,以及编译与 GNU 标准头文件,包含两个定义之一:

int strerror_r(int errnum,char buf,size_t buflen); / XSI 兼容 */

char *strerror_r(int errnum,size_t buflen); / GNU 特定的 */

在以下情况下提供符合 XSI 的 strerror_r() 版本: (_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600) && ! _GNU_SOURCE 否则,将提供 GNU 特定版本。

假设我动态链接我的应用程序与标准库,链接器如何正确链接函数的正确定义?

解决方法

其中一个实际上被称为 __xpg_strerror_r 并在需要时被重定向以用作 strerror_r,请参阅: https://code.woboq.org/userspace/glibc/string/string.h.html#409

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。