旧的libconfig版本支持config_setting_get_string

时间:2014-04-29 14:10:19

标签: c linux libconfig

我在C中有一个程序在debian框中运行完美。我被要求在CentOs 6.5上编译并运行它。除了我试图从配置文件中获取值的部分之外,所有内容都完美编译。代码写得像这样:

char config_file[150]="file.conf";
config_t cfg;
config_setting_t *ssl_xor_key;
char xkey[256];
ssl_xor_key = config_lookup(&cfg, "ssl.xor.key");
strcpy(xkey,config_setting_get_string(ssl_xor_key));

配置文件包含:

ssl:
{
    xor:
    {
        key="textexttextexttextext";
    };
};

当程序到达config_setting_get_string时,它崩溃了。我试图在strcpy命令中设置字符串,它可以工作。我在/ var / log / messages上看到了这个:

kernel: mysql-proxy[9808]: segfault at 8 ip 00007f3ba9d53d12 sp 00007f3baab8a0d8 error 4 in libconfig.so.8.0.0[7f3ba9d51000+a000]

我已经看到,虽然原始Debian盒子有libconfig 1.4.9,但CentOs最新版本是1.3.2。我不确定该版本是否支持该命令,因为我无法找到旧版本的文档。

我也尝试在Centos Box上编译最新版本但是我在这个过程中遇到错误,所以我认为它没有被支持。

知道什么是解决方案?

1 个答案:

答案 0 :(得分:0)

看起来旧版本的libconfig对配置文件中的sintax错误更敏感。我决定进入决赛;在文件上。现在它有效。