2014-04-29 157 views
0

的我在在一个Debian盒完美运行下的程序。我被要求在CentOs 6.5上编译和运行它。除了我尝试从配置文件获取值的部分之外,所有东西都完美编译。代码writen这样的:老libconfig版本支持config_setting_get_string

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的盒子的最新版本,但我得到的过程中的错误,所以我想是不是支载。

的什么都可以解决任何想法?

+1

也许你需要检查config_lookup的'的返回值()'你盲目使用它别的东西了。另外'cfg'似乎使用的未初始化的,我没有看到任何有实际尝试打开一个配置文件或任何东西,虽然我与特定的API ... – twalberg

+0

感谢诚然完全陌生的。我会尝试你所说的。你会推荐用于管理配置文件的api的替代方案吗? – jordi

回答

0

貌似libconfig的旧版本在配置文件来sintax误差更敏感。我最终决定了;在文件上。现在它可以工作。