首页 > 解决方案 > 如何使用 libcurl 构建而不使用 apt-get 库?

问题描述

来自一个轻松的 Windows 背景,这个在 linux 中的构建更难理解,如果这是一个明显的问题,请道歉。

我有一个使用 libcurl 的 c++ 程序。它在 Windows 上构建良好,但我现在必须将它移植到 linux(特别是树莓派)。它使用 mime 功能,因此必须使用足够近的最新版本。我已经安装了 curl 7.62,方法是从https://curl.haxx.se/download.html下载并按照https://curl.haxx.se/docs/install.html中的说明安装到/home/ pi/库/

我有一个虚拟的本地主机网络服务器进行测试。当我curl localhost从终端打电话时,我得到:curl: (48) An unknown option was passed in to libcurl. 在构建和运行我的程序时,我undefined symbol: curl_mime_init在运行时得到一个。经过一番谷歌搜索,这似乎是版本不匹配,我通过检查版本确认了这一点: Calling curl-config --versionGives: libcurl 7.62.0,但Calling Gives curl --version: curl 7.62.0 (armv7l-unknown-linux-gnueabihf) libcurl/7.52.1 <other stuff>...

我假设我的程序和 curl 都在寻找 libcurl 的其他软件,但是我如何将手动安装的 libcurl 版本指定为 g++,在运行时指定给我的 prog,并在从终端调用时指定 curl?

我的程序的makefile:

all: obj/curltests.o obj/Utility.o obj/curl_handler.o bin/curltests

obj/Utility.o: src/Utility.cpp src/Utility.h
    g++ -g -c -pthread src/Utility.cpp -o obj/Utility.o

obj/curl_handler.o: src/curl_handler.cpp src/curl_handler.h
    g++ -g -c -pthread src/curl_handler.cpp -o obj/curl_handler.o

obj/curltests.o: src/curltests.cpp
    g++ -g -c -pthread src/curltests.cpp -o obj/curltests.o

bin/curltests: obj/curltests.o obj/Utility.o obj/curl_handler.o makefile
    g++ -Wall -g \
        -I src \
        -L/home/pi/libraries/boost_1_68_0/stage/lib -lboost_system \
        -lboost_filesystem -lboost_program_options -lboost_date_time \
        obj/Utility.o obj/curltests.o obj/curl_handler.o  \
        -L/home/pi/libraries/curl-7.62.0/lib -lcurl \
        -o bin/curltests

不确定这是否有帮助,但运行whereis libcurl.so显示/usr/lib/中的libcurl[.la][.so]和/usr/local/lib 中的libcurl[.a][.la][.so],但/ usr/local/lib中没有home/pi/libraries/curl-7.62.0/lib在上面的 makefile 中指定。

标签: linuxcurlmakefileshared-librarieslibcurl

解决方案


推荐阅读