Исходя из удобного фона 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-файле выше.