我在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上编译最新版本但是我在这个过程中遇到错误,所以我认为它没有被支持。
知道什么是解决方案?
答案 0 :(得分:0)
看起来旧版本的libconfig对配置文件中的sintax错误更敏感。我决定进入决赛;在文件上。现在它有效。