(如果有帮助,请点个赞;如果有错误,请指出;如果转载,请注明出处)
关键词:
(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