天天看點

LINUX編譯json-c錯誤的解決:autoreconf找不到,json_tokener.c報錯

柳鲲鵬

sudo apt-get install libjson0-dev libjson0      
  • 下載下傳源碼編譯安裝
https://github.com/jehiah/json-c

執行指令

# 依賴庫, 否則可能提示autoreconf找不到
sudo apt-get install autoconf automake libtool
sudo apt-get install libffi-dev
 
#
sh ./autogen.sh
./configure
make
sudo make install      

 這裡要提一下兩個編譯錯誤:

  1. sh ./autogen.sh提示autoreconf: not found,是依賴庫沒有安裝。執行兩個install即可。
  2. 有兩個類似的錯誤:

json_tokener.c:201:36: error: right-hand operand of comma expression has no effect [-Werror=unused-value]

  ( ++(str), ((tok)->char_offset)++, c)

                                   ^

json_tokener.c:467:14: note: in expansion of macro ‘ADVANCE_CHAR’

             ADVANCE_CHAR(str, tok);

這是因為宏定義在這裡展開時,多了一個傳回值導緻的。

解決辦法:

增加宏定義:#define ADVANCE_CHAR2(str, tok)   ( ++(str), ((tok)->char_offset)++)

兩個報錯語句改為:ADVANCE_CHAR2(str, tok);

繼續閱讀