未定义对regcomp的引用

时间:2018-06-27 08:44:24

标签: c regex stm32

我正在用SW4STM32开发stm32。 当我尝试使用arm-none-eabi \ include \ regex.h时,我包含并进行了编译。 然后我得到了一个奇怪的东西。 regex.h定义了各种常量,例如

#define REG_NOMATCH  1
#define REG_BADPAT   2
#define REG_ECOLLATE 3
#define REG_ECTYPE   4

和各种结构

typedef struct {
    int re_magic;
    size_t re_nsub;     /* number of parenthesized subexpressions */
    __const char *re_endp;  /* end pointer for REG_PEND */
    struct re_guts *re_g;   /* none of your business :-) */
} regex_t;

和一些功能,包括

int regcomp(regex_t *__restrict, const char *__restrict, int);
size_t  regerror(int, const regex_t *__restrict, char *__restrict, size_t);
int regexec(const regex_t *__restrict, const char *__restrict,
            size_t, regmatch_t [__restrict], int);
void    regfree(regex_t *);

以下是我的代码

u8 Is_REG_Match(char* reg,char* s){

u8 z=0;
u8 z1=0;
regex_t reg_temp;

z=regcomp(&reg_temp,reg,0);
regcomp(&reg_temp, reg , 0);
if(z==0){
z1=regexec(&reg_temp,s,0,NULL,0);
regfree(&reg_temp);
return z1;
}
else
return 200;

}

当我编译时,reg_temp很好,但是函数regcomp,regexec和regfree是错误的-未定义对'regcomp'的引用,等等。

regex.h肯定已编译,因为我尝试删除regex.h和

中的struct regex_t的定义
regex_t reg_temp;

成为错误。

似乎regex.h未完全编译,只是缺少了功能部分。 我该如何解决?

1 个答案:

答案 0 :(得分:1)

您需要链接正则表达式库。

对于 gcc,mingW: 将 -lregex 添加到 makefile,然后将链接到 libsystre-0.so

如果你想要静态链接,添加 -Wl,-Bstatic -lregex -ltre -lintl -liconv 到 makefile。