(如果有帮助,请点个赞;如果有错误,请指出;如果转载,请注明出处)
关键词:
(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技术相关的微信公众号》