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的时候指定CCLD 


8.遇到的问题

编译的时候正常,但是在链接json-c 动态库的时候显示如下错误:

undefined reference to rpl_malloc

解决办法:打开config.h.in,删掉下面两行,重新编译一次    

#undef malloc
#undef realloc


IT从业人员需要及时关注技术动态,但是互联网的内容却过于离散,好东西往往隐藏得很深。 现在可以在微信公众号里面
搜索关注 “小鱼儿的IT技术分享” ,订阅我为大家每天汇总的IT技术信息。欢迎大家关注!
有兴趣的请点击《与IT技术相关的微信公众号》


你可能感兴趣的:(Linux系统,开源项目和框架,C语言,json-c,交叉编译)