Как я могу собрать с libcurl и не использовать библиотеки apt-get? - PullRequest
0 голосов
/ 05 декабря 2018

Исходя из удобного фона Windows, это здание в Linux труднее понять, поэтому извиняюсь, если это очевидный вопрос.

У меня есть программа на С ++, которая использует libcurl.Он прекрасно работает на Windows, но теперь я должен перенести его на Linux (особенно Raspberry Pi).Он использует функции MIME, поэтому должна быть использована последняя версия.Я установил curl 7.62, загрузив его с https://curl.haxx.se/download.html и установив его в соответствии с инструкциями на https://curl.haxx.se/docs/install.html на / home / pi / library / .

У меня есть фиктивный локальный веб-сервер для тестирования.Когда я звоню curl localhost из терминала, я получаю: curl: (48) An unknown option was passed in to libcurl.При сборке и запуске моей программы я получаю undefined symbol: curl_mime_init во время выполнения.После некоторого поиска в Google это выглядит как несовпадение версий, и я подтвердил это, проверив версии: вызов curl-config --version дает: libcurl 7.62.0, но вызов curl --version дает: curl 7.62.0 (armv7l-unknown-linux-gnueabihf) libcurl/7.52.1 <other stuff>....

Я предполагаючто моя программа и curl оба ищут другое программное обеспечение для libcurl, но как я могу указать вручную установленную версию libcurl для g ++, для моей проги во время выполнения и для скручивания при вызове из терминала?

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 отображается libcurl [.la] [. So] в / usr / lib / и libcurl [.a] [. la] [. so] в / usr / local / lib , но не в / home/pi/libraries/curl-7.62.0/lib, как указано в make-файле выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...