json-c编译及修改libjson.so动态库名称

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

你可能感兴趣的:(JSON)