1. 程式人生 > >json-c 交叉編譯(undefined reference to rpl_malloc )

json-c 交叉編譯(undefined reference to rpl_malloc )

(如果有幫助,請點個贊;如果有錯誤,請指出;如果轉載,請註明出處)

關鍵詞:

(1)json-c

(2)mips、openwrt

(3)Relocations in generic ELF

正文:

1、設定環境變數

(1)STAGING_DIR=/home/ubuntu/workplace/sdk/toolchain/bin:$STAGING_DIR

     export STAGING_DIR;

(2)export PATH=$PATH:/home/ubuntu/workplace/sdk/toolchain/bin

2、執行./autogen.sh

3、執行config.guess,獲取--build=option

,我的系統是i686-pc-linux-gnu

4、執行configure,

./configure --build=i686-pc-linux-gnu --host=mips-openwrt-linux-uclibc --prefix=$PWD/install

5、執行

 makeCC=/home/ubuntu/workplace/sdk/toolchain/bin/mips-openwrt-linux-uclibc-gcc  LD=/home/ubuntu/workplace/sdk/toolchain/bin/mips-openwrt-linux-uclibc-ld 

6、make install

7、遇到的問題:

/usr/bin/ld: .libs/arraylist.o:  Relocations in generic ELF (EM: 8) 

原因:由於搜尋路徑裡面不包含交叉編譯器的路徑,所以configure沒有找到交叉編譯器。

也就是說,configure裡面的--host=mips-openwrt-linux根本沒有生效。

解決辦法:

(1)設定搜尋路徑:

export PATH=$PATH:/home/ubuntu/workplace/sdk/toolchain/bin (請根據實際情況設定)

(2)make的時候指定CCLD 

8.遇到的問題

編譯的時候正常,但是在連結json-c 動態庫的時候顯示如下錯誤:

解決辦法:開啟config.h.in,刪掉下面兩行,重新編譯一次    

#undef malloc
#undef realloc

IT從業人員需要及時關注技術動態,但是網際網路的內容卻過於離散,好東西往往隱藏得很深。現在可以在微信公眾號裡面 搜尋關注“小魚兒的IT技術分享”,訂閱我為大家每天彙總的IT技術資訊。歡迎大家關注!