2014-04-29 40 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誤差更敏感。我最終決定了;在文件上。現在它可以工作。