(如果有幫助,請點個贊;如果有錯誤,請指出;如果轉載,請注明出處)
關鍵詞:
(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技術相關的微信公衆号》