1. 序言
我在linux下编译动态库,其中使用到了curl的静态库,但是编译时报出错误:“`Curl_cmalloc’ can not be used when making a shared object; recompile with -fPIC”
我们知道编译动态库的时候编译 .o 文件的时候需要加 -fPIC 这个连接,而我链接的culr静态库库是没有加这个选项的
2. 为curl编译添加 -fPIC选项
CFLAGS="-I/home/erain/work/face_rk/libs/openssl-1.0.2o/_install -I/home/erain/work/face_rk/libs/openssl-1.0.2o/_install/include -fPIC" CPPFLAGS="-I/home/erain/work/face_rk/libs/openssl-1.0.2o/_install -I/home/erain/work/face_rk/libs/openssl-1.0.2o/_install/include -fPIC" LDFLAGS="-L/home/erain/work/face_rk/libs/openssl-1.0.2o/_install/lib" LIBS="-ldl -lssl -lcrypto" ./configure --host=arm-linux-gnueabihf CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ --with-ssl --enable-shared --enable-static --disable-dict --disable-ftp --disable-imap --disable-ldap --disable-ldaps --disable-pop3 --disable-proxy --disable-rtsp --disable-smtp --disable-telnet --disable-tftp --disable-zlib --without-ca-bundle --without-gnutls --without-libidn --without-librtmp --without-libssh2 --without-nss --without-zlib --prefix=`pwd`/_install
加-fPIC选项后重新编译即可,再使用静态库就不会出现错误了
更多内容可参考
https://www.cnblogs.com/bigben0123/p/3304863.html
http://www.cnblogs.com/nobugtodebug/archive/2012/11/07/e6cd72c67b3dd843f40d7ce919f7336a.html