① 如何在qnx上添加libcurl庫
debian ubuntu安裝 試試 sudo apt-get install libcurl3 python-pycurl Redhat系 CentOS RHEL Fedora試試 yum -y install curl curl-devel
② 如何編譯libcurl
1:linux下源碼編譯
./configure --prefix=/usr/local/curl --disable-shared --enable-static --without-libidn --without-ssl --without-librtmp --without-gnutls --without-nss --without-libssh2 --without-zlib --without-winidn --disable-rtsp --disable-ldap --disable-ldaps --disable-ipv6
注意:不需要其它功能就disable,不然會在連接時報錯, 如果你沒有disable掉,但你的機器上又沒有安裝相應的庫,link時會報錯。
2:windows下源碼編譯
libcurl 7.21以後的版本在Windows下的編譯比較簡單,自帶了MinGW和VC環境的Makefile文件,首先去Curl官網下載源代碼:curl.haxx.se/download.html,任選一個下載即可,推薦這個: curl-7.21.2.tar.gz,下載完成後解壓開,打開命令行進入curl源碼目錄,(在此之前請先設置好MinGW的環境變數):
cd curl-7.21.2
編譯libcurl庫文件:
cd lib
make -f Makefile.m32
等待編譯完成即可
(若需編譯生成curl可執行文件,則執行:
cd ../src
make -f Makefile.m32)
編譯完成後,我們需要復制include頭文件和庫文件到一個目錄供程序開發用
1. 新建curllib目錄
2. 新建curllib/include目錄,將源代碼include目錄里的curl文件夾復制到curllib/include目錄,這些是使用libcurl需要的頭文件
3. 新建curllib/lib目錄,將源代碼lib目錄里編譯好的庫文件libcurl.a,libcurldll.a,libcurl.dll復制到curllib目錄
4. 將MinGW安裝目錄下lib文件夾里的libwldap32.a和libws2_32.a復制到curllib/lib目錄
③ linux怎麼安裝libcurl
下載libcurl的安裝包後,依次執行如下命令安裝即可。
1、進入壓縮包所在目錄
# cd /root/soft
2、解壓縮安裝包
# tar -zxf curl-7.42.1.tar.gz
3、進入解壓後的安裝包目錄
# cd curl-7.42.1
4、配置
# ./configure --prefix=/usr/local/curl
註:下載安裝包時請找一個國內的鏡像站下載,要不然下載速度會非常慢。
④ c++多線程中使用libcurl庫的問題
庫本身是線程安全的,多個線程之間不要共享CURL*的句柄,應該是沒有問題的. 以下是官方說法:
http://curl.haxx.se/libcurl/c/libcurl-tutorial.html 中的Multi-threading Issues:
The first basic rule is that you must never
simultaneously share a libcurl handle (be it easy or multi or whatever)
between multiple threads. Only use one handle in one thread at any
time. You can pass the handles around among threads, but you must never
use a single handle from more than one thread at any given time.
libcurl is completely thread safe, except for two
issues: signals and SSL/TLS handlers. Signals are used for timing out
name resolves (ring DNS lookup) - when built without c-ares support
and not on Windows.
If you are accessing HTTPS or FTPS URLs in a
multi-threaded manner, you are then of course using the underlying SSL
library multi-threaded and those libs might have their own requirements
on this issue. Basically, you need to provide one or two functions to
allow it to function properly.
⑤ 如何在LINUX下安裝libcurl
可以使用yum命令進行安裝。
yuminstalllibcurl
註:機器可以聯網的情況下,如果不能聯網需要配置本地yum源
⑥ 如何在Visual Studio 2013中使用libcurl庫
#pragma comment (lib,"你的庫文件的名字.lib")
寫在程序的開頭 還一種方法是 添加庫文件的路徑 在工具->選項->項目和解決方案->VC++目錄下添加你庫文件的路徑。
最好放在默認路徑下面,編譯的時候它會去鏈接
⑦ libcurl是什麼語言開發的
編譯源碼
有很多種不同的方式來編譯C語言代碼。這里使用UNIX平台下的編譯方式。即使你使用的是其他的操作系統,你仍然可以通過閱讀本文檔來獲取許多有用的信息。
編譯
你的編譯器必須知道libcurl頭文件的位置。所以在編譯的時候,你要設置頭文件的包含路徑。可以使用curl-config工具來獲取這方面的信息:
$ curl-config –cflags
鏈接
編譯完源碼(這時的源代碼不是指libcurl的源代碼,你是你自己寫的程序代碼)之後,你還必須把目標文件鏈接成單個可執行文件。你要鏈接libcurl庫,以及libcurl所依賴的其他庫,例如OpenSLL庫。當然可能還需要一些其他的操作系統庫。最後你還要設置一些編譯選項,當然可以使用curl-config工具簡化操作:
$curl-config –libs
是否使用SSL
定製編譯libcurl。與其他庫不同的是,libcurl可以定製編譯,根據實際需要是否支持某些特性,如是否支持SSL傳輸,像HTTPS和FTPS。如果決定需要支持SSL,必須在編譯時正確的設置。可以使用』curl-config』來判斷libcurl庫是否支持SSL:
$ curl-config –feature
autoconf宏
當你編寫配置腳本來檢測libcurl及其相應設置時,你可以使用預定義宏。文檔docs/libcurl/libcurl.m4告訴你如何使用這些宏。
跨平台的可移植的代碼
libcurl的開發人員花費很大的努力,使libcurl盡可能在大多數平台上正常運行。
全局初始化
應用程序在使用libcurl之前,必須先初始化libcurl。libcurl只需初始化一次。可以使用以下語句進行初始化:
curl_global_init();
curl_global_init()接收一個參數,告訴libcurl如何初始化。參數CURL_GLOBAL_ALL 會使libcurl初始化所有的子模塊和一些默認的選項,通常這是一個比較好的默認參數值。還有兩個可選值:
CURL_GLOBAL_WIN32
只能應用於Windows平台。它告訴libcurl初始化winsock庫。如果winsock庫沒有正確地初始化,應用程序就不能使用socket。在應用程序中,只要初始化一次即可。
CURL_GLOBAL_SSL
如果libcurl在編譯時被設定支持SSL,那麼該參數用於初始化相應的SSL庫。同樣,在應用程序中,只要初始化一次即可。
libcurl有默認的保護機制,如果在調用curl_easy_perform時它檢測到還沒有通過curl_global_init進行初始化,libcurl會根據當前的運行時環境,自動調用全局初始化函數。但必須清楚的是,讓系統自已初始化不是一個好的選擇。
當應用程序不再使用libcurl的時候,應該調用curl_global_cleanup來釋放相關的資源。
在程序中,應當避免多次調用curl_global_init和curl_global_cleanup。它們只能被調用一次。
⑧ libcurl庫編譯生成不帶版本的設置方法
原文鏈接: https://blog.csdn.net/Auris/article/details/94549541
Android JNI 最近調試發現Android可以調用Linux的so庫,但是Android不能直接調用so庫帶版本號的文件,類似於xxx.so.4.5.0;
xxx.so.4.5.0 的文件方式是Linux用來區分so庫文件的版本作用的,為了讓Android能夠調用so庫,需要在編譯so庫的時候,配置編譯腳本
,使其支持生成不帶版本號的so庫文件;
我們在使用libcurl庫的時候,就出現了這個問題,將libcurl編譯生成的so庫文件libcurl.so.4.5.0直接導入到Android工程中,運行提示
無法找打libcurl.so.4.5.0文件;
通過修改curl源碼文件夾下的configure文件
library_names_spec='${libname}${shared_ext}'
soname_spec=''
編譯開源項目: https://github.com/ibaoger/libcurl-android
一定要用ndk-r13b,ndk-r13b,ndk-r13b 進行編譯