1、git clone https: //github.com/json-c/json-c.git
功能:获取源码;
2、cd json-c/
功能:进入目录;
3、./autogen.sh
功能:生成configure.ac、再生成configure配置;
4、./configure --host=arm-linux --prefix=`pwd`/_install #注意编译器,我就被坑了
功能:生成makfile
5、make
功能:执行makfile,这个时候默认会生成动态库“libjson-c.so.4”,但是我需要将其库的名称改为“libjson-c-Mg.so.4”,所以在这一步修改makfile即可,搜索makfile中的“libjson-c”字符,将其改为“libjson-c-Mg”即可。附加一句:原来是想编译完之后直接修改动态库的名称,编译可以通过,但是在运行应用程序的时候无法找到其动态库(库的名称仍然为“libjson-c.so.4”,显然这不是我要的结果),原因是动态库在编译生成时采用的是隐式链接,所以单纯的改名是满足不了要求的,只能修改makfile;
6、make install
功能:将对应的库、头文件安装到第4步指定的路径下
7. 扩展
应用程序导入到嵌入式linux终端里,通过ldd工具查看其依赖的动态库
7.1 单纯的修改动态库名称(动态库仍然为libjson-c.so.4)
root@KnowMe:/mnt/app# ldd app
libarchMg.so => /lib/libarchMg.so (0xb6eee000)
libdriversMg.so => /lib/libdriversMg.so (0xb6e68000)
libLibDbMg.so => /lib/libLibDbMg.so (0xb6e57000)
libTaskDBMg.so => /lib/libTaskDBMg.so (0xb6e39000)
libMeterProMg.so => /lib/libMeterProMg.so (0xb6dd2000)
libLibMtrMg.so => /lib/libLibMtrMg.so (0xb6db6000)
libLibAcMg.so => /lib/libLibAcMg.so (0xb6d7a000)
libProtoIfMg.so => /lib/libProtoIfMg.so (0xb6d50000)
libModemMg.so => /lib/libModemMg.so (0xb6d21000)
libpthread.so.0 => /lib/arm-linux-gnueabi/libpthread.so.0 (0xb6cf8000)
libXmlMg.so => /lib/libXmlMg.so (0xb6cd6000)
libjson-c.so.4 => not found
libpaho-mqtt3c.so.1 => /usr/lib/libpaho-mqtt3c.so.1 (0xb6c30000)
libstdc++.so.6 => /usr/lib/arm-linux-gnueabi/libstdc++.so.6 (0xb6b52000)
libm.so.6 => /lib/arm-linux-gnueabi/libm.so.6 (0xb6aa1000)
libgcc_s.so.1 => /lib/arm-linux-gnueabi/libgcc_s.so.1 (0xb6a72000)
libc.so.6 => /lib/arm-linux-gnueabi/libc.so.6 (0xb6929000)
libnsl.so.1 => /lib/arm-linux-gnueabi/libnsl.so.1 (0xb6904000)
libdl.so.2 => /lib/arm-linux-gnueabi/libdl.so.2 (0xb68f1000)
/lib/ld-linux.so.3 (0xb6f04000)
7.2 修改makfile(动态库变成了libjson-c-Mg.so.4)
root@KnowMe:/mnt/app# ldd app
libarchMg.so => /lib/libarchMg.so (0xb6f44000)
libdriversMg.so => /lib/libdriversMg.so (0xb6ebe000)
libLibDbMg.so => /lib/libLibDbMg.so (0xb6ead000)
libTaskDBMg.so => /lib/libTaskDBMg.so (0xb6e8f000)
libMeterProMg.so => /lib/libMeterProMg.so (0xb6e28000)
libLibMtrMg.so => /lib/libLibMtrMg.so (0xb6e0c000)
libLibAcMg.so => /lib/libLibAcMg.so (0xb6dd0000)
libProtoIfMg.so => /lib/libProtoIfMg.so (0xb6da6000)
libModemMg.so => /lib/libModemMg.so (0xb6d77000)
libpthread.so.0 => /lib/arm-linux-gnueabi/libpthread.so.0 (0xb6d4e000)
libXmlMg.so => /lib/libXmlMg.so (0xb6d2c000)
libjson-c-Mg.so.4 => /lib/libjson-c-Mg.so.4 (0xb6d10000)
libpaho-mqtt3c.so.1 => /usr/lib/libpaho-mqtt3c.so.1 (0xb6c6a000)
libstdc++.so.6 => /usr/lib/arm-linux-gnueabi/libstdc++.so.6 (0xb6b8c000)
libm.so.6 => /lib/arm-linux-gnueabi/libm.so.6 (0xb6adb000)
libgcc_s.so.1 => /lib/arm-linux-gnueabi/libgcc_s.so.1 (0xb6aac000)
libc.so.6 => /lib/arm-linux-gnueabi/libc.so.6 (0xb6963000)
libnsl.so.1 => /lib/arm-linux-gnueabi/libnsl.so.1 (0xb693e000)
libdl.so.2 => /lib/arm-linux-gnueabi/libdl.so.2 (0xb692b000)
/lib/ld-linux.so.3 (0xb6f5a000)
关于automake、autoconf、configure的配置详见:http://www.cnblogs.com/bugutian/p/5560548.html