天天看點

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

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

關鍵詞:

(1)json-c

(2)mips、openwrt

(3)Relocations in generic ELF

(4)undefined reference to rpl_malloc

正文:

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的時候指定CC和LD 

8.遇到的問題

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

undefined reference to rpl_malloc

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

#undef malloc

#undef realloc

  • IT從業人員需要及時關注技術動态,但是網際網路的内容卻過于離散,好東西往往隐藏得很深。 現在可以在微信公衆号裡面 搜尋關注 “小魚兒的IT技術分享” ,訂閱我為大家每天彙總的IT技術資訊。歡迎大家關注!
    • 有興趣的請點選《與IT技術相關的微信公衆号》

繼續閱讀