Linux 下如何安装各种 库
通常 初学者 自己不会安装库,都是按照网上一步一步去安装,有时候存在问题,有的网上的 需要 sudo 权限,而你并没有,这时候就需要将 库 安装在指定位置了,而你却并不知道如何安装,找又不好找到自己想要的安装 文章,所以本文教各位 如何在 ubuntu linux环境下 安装 库。
本文以安装 curl 库和 openssl 库为例。顺便使用了对应的 curl 库。
文章目录
一、openssl 库的 卸载和安装
由于我们访问的网址 通常都是 https 开头的,也就是需要 ssl证书,所以在安装 curl 库之前需要安装 openssl
openssl 库 的卸载: sudo apt-get purge openssl
sudo rm -rf /etc/ssl #删除配置文件
openssl 库 的安装:
- 打开openssl 官网
- 点击 /source/old 下载旧版
- 点击 1.1.1 版本
- 下载 1.1.1j.tar.gz
-
解压命令 tar -zxvf openssl-1.1.1j.tar.gz
-
进入文件夹 cd openssl-1.1.1j/
-
先去 阅读 README 文件,发现 安装需要查看 INSTALL 文件
-
查看 INSTALL 文件,我们使用的是 ubuntu 系统,所以找的是 Unix 下的安装,我们不需要任何额外的配置,所以使用默认的就好,下面有一堆参数,如果有需要就去查看配置。
-
./config
-
sudo make (时间较久,需要耐心等待)
-
sudo make install
二、curl 库的 卸载和安装
curl 库 的卸载:apt-get remove curl
curl 库 的安装:
-
百度网盘下载 链接:curl 提取码:wgzs
-
解压缩命令 tar xvf curl-7.71.1.tar.bz2
-
切换目录到 curl-7.71.1
-
一样先查看 README 文件,发现里面没有关于安装的说明,再看下也没有 INSTALL 文件
-
一般这种情况 切换到 docs 目录 中查看 README.md,INSTALL文件 ,INSTALL.md文件,发现安装说明在 INSTALL.md文件中
-
由于我们需要访问 https 的网页 需要有 openssl ,所以再安装的时候 需要配置 openssl 参数,如图所示,由于安装 openssl 库时 装在了 默认路径,所以不需要指定 openssl 的路径,这次我演示下指定下 curl 库的安装位置。
-
先返回 curl-7.71.1/ 目录
-
./configure --prefix=$PWD/_install --with-ssl //第一个 --prefix=$PWD/_install 为安装到当前路径下的 _install 文件夹下,没有这个文件夹会自动生成,不用当心。第二个参数为 需要配置 openssl 并且 openssl 库 安装在默认位置。如果没有安装在默认位置,需要 --with-ssl=openssl安装位置!
-
make 编译
-
make install 安装(不在根路径下,不需要sudo权限)
-
测试,使用下面代码编译,尝试下 curl 库的使用
三、使用 curl 爬取 百度的 html
返回到 包含curl-7.71.1 的目录下,创建一个 test.c 文件,输入以下内容。
#include <stdio.h>
#include <string.h>
#include <curl/curl.h>
char htmldata[1024] = {'\0'};//全局变量,用来接收从 百度 html返回的数据
size_t readData(void *ptr, size_t size, size_t nmemb, void *stream)//回调函数,把从后台的数据拷贝给ocrRetBuf
{
strncpy(htmldata,ptr,1024);
printf("%s\n",htmldata);
}
void getUrl()
{
CURL *curl;
CURLcode res;
curl = curl_easy_init(); // 初始化
if (curl)
{
curl_easy_setopt(curl, CURLOPT_URL,"http://www.baidu.com");
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION,readData); //回调函数readDate读取返回值
res = curl_easy_perform(curl); // 执行
if (res != 0) {
curl_easy_cleanup(curl);
}
}
}
int main(void)
{
getUrl();
return 0;
}
我尝试复制了下,发现位置 乱序了,在 vi 编辑器中使用 gg=G 命令可以恢复。
然后退出 ,执行编译命令 gcc -o test test.c -I ./curl-7.71.1/_install/include/ -L ./curl-7.71.1/_install/lib/ -lcurl
- -o 表示 生成 test 这个可执行文件
- -I 表示 如果有找不到的 头文件 去这个指定的路径查找
- -L 表示 如果有找不到的 库去这个指定路径查找
- -lcurl 表示 编译时动态连接 库 curl
如果成功的会返回 百度 的 html 信息,类似下图,证明成功了。