获取libcurl
网址:Releases · curl/curl · GitHub
git: git clone https://github.com/curl/curl.git
目前最新版是7.77,本文编译7.61.1版本,其它版本可参考。
编译步骤
libcurl编译需要依赖openssl,openssl的编译配置请参考:Linux环境openssl v1.1.1编译及环境配置
1 执行:tar xzvf curl-7.61.1.tar.gz 解压libcurl包
2 进入解压后的目录执行:./buildconf 生成configure文件。
3 执行:./configure --prefix=/usr/local --with-ssl=/usr/local/openssl LDFLAGS=-Wl,-rpath=.,--disable-new-dtags 或者 ./configure --prefix=/usr/local -Wl,-rpath=../lib,--disable-new-dtags
--prefix:配置libcur的安装路径。
--with-ssl:配置openssl的安装路径,主要是为了编译curl链接时使用。
LDFLAGS:配置libcurl依赖库openssl的rpath,减少环境变量配置,到时直接将openssl库复制到libcurl同级目录下就OK了。
更多配置选项请看readme文件或--help中查看 或是直接 vim configure看。
4 执行sudo make -j8,make install 进行编译安装。文件安装到了/usrlocal/bin include lib 中。
5 安装完成将依赖库cp到libcurl的安装目录lib路径中与libcurl.so同级路径。
完成编译配置。
环境配置
由于依赖了其它三方库openssl,在项目中只配置libcur环境,所以配置了libcur的rapath,这时项目中依赖到了libcurl,不需要再配置openssl链接库目录LIBRARY_PATH,和动态库加载目录LD_LIBRARY_PATH。
库的使用
1 app -> b -> a , 确认在app中是否需要链接库a。
1.1 如果库a在LD环境变量中是否还需要链接? 不需要再指定—L../lib -la 。
1.2 如果不在,是否需要链接?需要,指定—L../lib -la。
2 如果在app中链接了a库,不在b库中链接a库,只是包含头文件 会导致什么问题?
2.1 如果在APP工程文件中使用-L../lib -la 指定了a库位置和名称,程序会正常运行,不会出现错误。
2.2 如果通过环境变量设置了a库路径,此时会报错找不到符号链接错误。