0

我有一个 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,但 CentO 的最新版本是 1.3.2。我不确定该版本是否支持该命令,因为我无法找到旧版本的文档。

我也尝试在 Centos Box 上编译最新版本,但我在过程中遇到错误,所以我认为它不受支持。

知道什么可以解决吗?

4

1 回答 1

0

看起来旧版本的 libconfig 对配置文件中的 sintax 错误更敏感。我错过了决赛;文件上。现在它起作用了。

于 2014-04-30T13:53:10.473 回答