當前位置:首頁 » 操作系統 » curl源碼下載

curl源碼下載

發布時間: 2022-05-21 05:31:52

❶ 如何編譯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官網下載源代碼:http://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目錄
至此,curllib就是我們開發中要使用到的libcurl的全部文件,下面新建一個測試程序main.c

❷ curl源碼包中的android.mk什麼時候沒有了

curl是一個著名的開源文件傳輸協議實現軟體,其中包括了HTTP、HTTPS、FTP等多種常用不常用協議的實現。在curl最新版本的官方源代碼中其實已經包括了android的編譯文件(Android.mk),不過要想編譯通過還需要做一些工作。
我所使用的curl版本是7.20.0,android源代碼版本是eclair 2.1。
首先將curl解壓到external目錄下,將目錄名稱改為curl(不改也可以,不過android的習慣是不帶版本號,入鄉隨俗吧)。
(1) 首先要創建一個頭文件curl_config.h。創建方法在curl/Android.mk文件頭部的注釋里有說明。根據這個說明運行configure。我所使用的命令行如下(我是編譯成x86版本的,不過我們的目的只是要生成curl_config.h文件,所以x86還是arm其實是一樣的):

ANDROID_ROOT=`realpath ../..` && PATH="$ANDROID_ROOT/prebuilt/linux-x86/toolchain/i686-unknown-linux-gnu-4.2.1/bin:$PATH" ./configure --host=x86-linux CC=i686-unknown-linux-gnu-gcc CPPFLAGS="-I $ANDROID_ROOT/external/curl/include/ -I $ANDROID_ROOT/external/curl -I $ANDROID_ROOT/out/target/proct/eeepc/obj/STATIC_LIBRARIES/libcurl_intermediates -I $ANDROID_ROOT/system/core/include -I $ANDROID_ROOT/hardware/libhardware/include -I $ANDROID_ROOT/hardware/libhardware_legacy/include -I $ANDROID_ROOT/hardware/ril/include -I $ANDROID_ROOT/dalvik/libnativehelper/include -I $ANDROID_ROOT/frameworks/base/include -I $ANDROID_ROOT/frameworks/base/opengl/include -I $ANDROID_ROOT/external/skia/include -I $ANDROID_ROOT/out/target/proct/eeepc/obj/include -I $ANDROID_ROOT/bionic/libc/arch-x86/include -I $ANDROID_ROOT/bionic/libc/include -I $ANDROID_ROOT/bionic/libstdc++/include -I $ANDROID_ROOT/bionic/libc/kernel/common -I $ANDROID_ROOT/bionic/libc/kernel/arch-x86 -I $ANDROID_ROOT/bionic/libm/include -I $ANDROID_ROOT/bionic/libm/include/i387 -I $ANDROID_ROOT/bionic/libthread_db/include -I $ANDROID_ROOT/external/openssl/include" CFLAGS="-fno-exceptions -Wno-multichar -march=i686 -m32 -fPIC -include $ANDROID_ROOT/system/core/include/arch/target_linux-x86/AndroidConfig.h -m32 -DANDROID -fmessage-length=0 -fno-strict-aliasing -Wno-unused -Winit-self -Wpointer-arith -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wpointer-arith -Wwrite-strings -Wunused -Winline -Wnested-externs -Wmissing-declarations -Wmissing-prototypes -Wno-long-long -Wfloat-equal -Wno-multichar -Wsign-compare -Wno-format-nonliteral -Wendif-labels -Wstrict-prototypes -Wdeclaration-after-statement -Wno-system-headers" LIB="$ANDROID_ROOT/prebuilt/linux-x86/toolchain/i686-unknown-linux-gnu-4.2.1/lib/gcc/i686-unknown-linux-gnu/4.2.1/libgcc.a $ANDROID_ROOT/prebuilt/linux-x86/toolchain/i686-unknown-linux-gnu-4.2.1/lib/gcc/i686-unknown-linux-gnu/4.2.1/crtbegin.o $ANDROID_ROOT/prebuilt/linux-x86/toolchain/i686-unknown-linux-gnu-4.2.1/lib/gcc/i686-unknown-linux-gnu/4.2.1/crtend.o"

(2) configure找不到openssl,所以所生成的配置文件是不使用openssl的。要想使用ssl,需要手動修改 lib/curl_config.h和src/curl_config.h,打開宏定義HAVE_LIBSSL、 HAVE_OPENSSL_CRYPTO_H、HAVE_OPENSSL_ERR_H、HAVE_OPENSSL_PEM_H、 HAVE_OPENSSL_PKCS12_H、HAVE_OPENSSL_RSA_H、HAVE_OPENSSL_SSL_H、 HAVE_OPENSSL_X509_H、USE_OPENSSL、USE_SSLEAY(但是注意android沒有編譯openssl中的 engine,因此不要打開宏定義HAVE_OPENSSL_ENGINE_H),同時注釋掉宏定義HAVE_MALLOC_H和HAVE_IOCTL, 這兩個宏定義在Android_config.h中有定義,不注釋的話在編譯過程中會有很多警告(但是能正確編譯通過)
(3) 修改curl/Android.mk文件,在LOCAL_C_INCLUDES變數的值中增加external/openssl/include,在 LOCAL_SYSTEM_SHARED_LIBRARIES變數的值中增加 libssl libz libcrypto。
好了現在可以編譯了:
make curl ONE_SHOT_MAKEFILE=external/curl/Android.mk TARGET_PRODUCT=<...>

不過上述Android.mk文件會將libcurl編譯為靜態庫,要想編譯為動態庫還需要修改一下Android.mk文件。

❸ android開發用libcurl多嗎

下面是移植步驟:
1. 下載curl源碼
我這里下載的是curl-7.22.0,源碼下載地址為:http://curl.haxx.se/download.html

2. 准備android源碼編譯環境,
android源碼應已全部編譯過,具體細節這里不詳述,我這里使用的是android2.2 froyo源碼樹。

3. 在android中編譯curl
在最新的curl源碼里其實已經帶有Android.mk這個編譯文件了,而且在這文件的開頭注釋部分比較詳細地介紹編譯方法。
1)拷貝curl源碼至android源碼樹下的external/curl

2)cd 到 external/curl目錄下,輸入(紅色字部分根據自己的環境做相應的更改):
ANDROID_HOME=/home/braincol/workspace/android/froyo && \
NDK_HOME=/home/braincol/workspace/android/froyo/ndk && \
PATH="$ANDROID_HOME/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin:$PATH" \
./configure --host=arm-linux CC=arm-eabi-gcc --with-random=/dev/urandom \
CPPFLAGS="-I$NDK_HOME/platforms/android-8/arch-arm/usr/include \
-I $ANDROID_HOME/external/curl/include/ \
-I $ANDROID_HOME/external/curl/3rd/include \
-I $ANDROID_HOME/external/curl \
-I $ANDROID_HOME/out/target/proct/generic/obj/STATIC_LIBRARIES/libcurl_intermediates \
-I $ANDROID_HOME/dalvik/libnativehelper/include/nativehelper \
-I $ANDROID_HOME/system/core/include \
-I $ANDROID_HOME/hardware/libhardware/include \
-I $ANDROID_HOME/hardware/libhardware_legacy/include \
-I $ANDROID_HOME/hardware/ril/include \
-I $ANDROID_HOME/dalvik/libnativehelper/include \
-I $ANDROID_HOME/frameworks/base/include \
-I $ANDROID_HOME/frameworks/base/opengl/include \
-I $ANDROID_HOME/frameworks/base/native/include \
-I $ANDROID_HOME/external/skia/include \
-I $ANDROID_HOME/out/target/proct/generic/obj/include \
-I $ANDROID_HOME/bionic/libc/arch-arm/include \
-I $ANDROID_HOME/bionic/libc/include \
-I $ANDROID_HOME/bionic/libstdc++/include \
-I $ANDROID_HOME/bionic/libc/kernel/common \
-I $ANDROID_HOME/bionic/libc/kernel/arch-arm \
-I $ANDROID_HOME/bionic/libm/include \
-I $ANDROID_HOME/bionic/libm/include/arch/arm \
-I $ANDROID_HOME/bionic/libthread_db/include \
-include $ANDROID_HOME/system/core/include/arch/linux-arm/AndroidConfig.h \
-I $ANDROID_HOME/system/core/include/arch/linux-arm/ \
-D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__ -DANDROID -DNDEBUG -DNDEBUG -DHAVE_CONFIG_H" \
CFLAGS="-fno-exceptions -Wno-multichar -msoft-float -fpic -ffunction-sections \
-funwind-tables -fstack-protector -Wa,--noexecstack -Werror=format-security \
-fno-short-enums -march=armv5te -mtune=xscale -Wno-psabi -mthumb-interwork \
-fmessage-length=0 -W -Wall -Wno-unused -Winit-self -Wpointer-arith \
-Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point \
-g -Wstrict-aliasing=2 -finline-functions -fno-inline-functions-called-once \
-fgcse-after-reload -frerun-cse-after-loop -frename-registers -UDEBUG \
-mthumb -Os -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64 \
-Wpointer-arith -Wwrite-strings -Wunused -Winline -Wnested-externs \
-Wmissing-declarations -Wmissing-prototypes -Wno-long-long -Wfloat-equal \
-Wno-multichar -Wsign-compare -Wno-format-nonliteral -Wendif-labels \
-Wstrict-prototypes -Wdeclaration-after-statement -Wno-system-headers" \
LIBS="-nostdlib -Bdynamic -Wl,-T,$ANDROID_HOME/build/core/armelf.x \
-Wl,-dynamic-linker,/system/bin/linker -Wl,--gc-sections -Wl,-z,noreloc \
-L$ANDROID_HOME/out/target/proct/generic/obj/lib -Wl,-z,noexecstack \
-Wl,-rpath-link=$ANDROID_HOME/out/target/proct/generic/obj/lib \
-lc -llog -lcutils -lstdc++ \
-Wl,--no-undefined $ANDROID_HOME/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/libgcc.a \
$ANDROID_HOME/out/target/proct/generic/obj/lib/crtend_android.o \
-lm $ANDROID_HOME/out/target/proct/generic/obj/lib/crtbegin_dynamic.o \
-L$ANDROID_HOME/external/curl/3rd/libs"

如果$ANDROID_HOME目錄下沒有ndk的開發包,那麼到google的官網上下載一個放進去就行了。

3)cd 到源碼根目錄 mmm extern/libcurl:
編譯完成之後,會生成靜態庫:out/target/proct/generic/obj/STATIC_LIBRARIES/libcurl_intermediates/libcurl.a 。

4)如果要生成動態庫需要修改curl下的Android.mk :
LOCAL_PRELINK_MODULE := false
LOCAL_MODULE:= libcurl
LOCAL_MODULE_TAGS := optional
# Copy the licence to a place where Android will find it.
# Actually, this doesn't quite work because the build system searches
# for NOTICE files before it gets to this point, so it will only be seen
# on subsequent builds.
ALL_PREBUILT += $(LOCAL_PATH)/NOTICE
$(LOCAL_PATH)/NOTICE: $(LOCAL_PATH)/COPYING | $(ACP)
$(-file-to-target)
#include $(BUILD_STATIC_LIBRARY)
include $(BUILD_SHARED_LIBRARY)

4. 在android中測試curl
1)在android froyo源碼樹中下建立一個mytest目錄,該目錄下再建立一個curltest目錄。

2)在目錄curtest下創建curl-test.cpp:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

#include "curl/curl.h"
#include <stdio.h>;
int main() {
CURL *curl;
CURLcode res;

curl_global_init(CURL_GLOBAL_ALL);

curl = curl_easy_init();
if (curl) {
curl_easy_setopt(curl, CURLOPT_URL, "http://www.cnblogs.com/hibraincol/");
res = curl_easy_perform(curl);
if (0!=res) {
printf("curl error: %d\n", res);
}

curl_easy_cleanup(curl);
}

curl_global_cleanup();
return 0;
}

3)在目錄curtest下創建Android.mk:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

# curl test executable
#
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_C_INCLUDES += \
$(LOCAL_PATH)/3rd/include

LOCAL_SRC_FILES:= curl-test.cpp

# No shared libraries.
LOCAL_SHARED_LIBRARIES :=

# No static libraries.
LOCAL_STATIC_LIBRARIES := libcurl

LOCAL_MODULE := curl-test
include $(BUILD_EXECUTABLE)

4)把libcurl的頭文件拷貝到curtest目錄下的3rd/include目錄下:
cp -rf out/target/proct/generic/obj/include/libcurl/curl mytest/curltest/3rd/include

5)到android源碼樹的根目錄下:mmm /mytest/curltest/
braincol@ubuntu:~/workspace/android/froyo$ mmm mytest/curltest/
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=2.2
TARGET_PRODUCT=generic
TARGET_BUILD_VARIANT=eng
TARGET_SIMULATOR=
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
HOST_ARCH=x86
HOST_OS=linux
HOST_BUILD_TYPE=release
BUILD_ID=MASTER
============================================
make: Entering directory `/home/braincol/workspace/android/froyo'
target thumb C++: curl-test <= mytest/curltest/curl-test.cpp
mytest/curltest/curl-test.cpp:2:19: warning: extra tokens at end of #include directive
target Executable: curl-test (out/target/proct/generic/obj/EXECUTABLES/curl-test_intermediates/LINKED/curl-test)
target Non-prelinked: curl-test (out/target/proct/generic/symbols/system/bin/curl-test)
target Strip: curl-test (out/target/proct/generic/obj/EXECUTABLES/curl-test_intermediates/curl-test)
Install: out/target/proct/generic/system/bin/curl-test
make: Leaving directory `/home/braincol/workspace/android/froyo'

可以看到在out/target/proct/generic/system/bin/下生成了curl-test這個測試程序。

6)將curl-test拷貝到真機或者模擬器中運行。
a.我這里是在android真機的根目錄下建立了一個test目錄.
b.然後通過adb push將curl-test拷貝到該目錄下,並更改curl-test為可執行許可權:chmod 777 curl-test.
c. adb shell 進入shell控制台,然後cd到test目錄下, ./curl-test 執行,可以看到列印出的網頁源碼,移植成功。

這樣在之後的android app開發中,如果需要用到libcurl的庫,就可以直接out/target/proct/generic/obj/include/libcurl/curl里的頭文件和out/target/proct/generic/obj/STATIC_LIBRARIES/libcurl_intermediates/libcurl.a拿到app工程中去用就行了。

❹ C語庫與curl使用方法

cURL 屬於第三方庫,因此標准C是不會附帶這個的。
cURL 有較強跨平台性, 大部分平台都可以跑過, 主流編譯器也都沒有問題。

解決辦法:
去cURL官網下載你對應到平台到源碼或是二進制。
如果你對於源碼編譯不熟悉,建議下載二進制文件,僅需鏈接即可。

cURL裡面有HTTP的例子,包括post/get ,足夠滿足你當前需求了。
具體去cURL的官網看吧。

有問題hi

❺ bat查看網頁源代碼

下載個curl.exe放到system32目錄,然後用curl命令查看源碼。
如curl 網路網址。
如果中文亂碼,那可能是curl默認返回utf8源碼,而命令行默認代碼頁936顯示,可以chcp 65001切換utf8代碼頁,然後右擊cmd標題欄,屬性,字體,選擇Lucida Console。
換回來的話,只需要chcp 936
我用的版本的curl7.63不用切換代碼頁都可以正常查看帶中文的utf8源碼。
更改cmd窗口後,在注冊表HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe
這里保存了自定義設置,刪除,cmd恢復默認。

❻ 求php CURl模擬登錄淘寶源碼

淘寶有商家服務api的, 這個更快。
curl模擬登錄,每次對方變動 那不是得累S了。

❼ 阿里雲linux 怎麼安裝curl

1、下載curl安裝包。(我的php是4.4.4的,下載最新的curl 7.16 不能使用,最後下載7.14的才可以,所以要注意一下版本問題)
./configure
make
php要求curl的目錄要有include和lib目錄,並且include下要有easy.h 和curl.h兩個文件,lib下要有libcurl.a。經編譯後include下的文件有了,但是lib目錄下沒有。原來生成到lib/.libs目錄下,所以要到lib目錄。

2、進入安裝原php的源碼目錄,
cd ext
cd curl
phpize
./configure --with-curl=DIR
make
就會在PHPDIR/ext/curl/moudles/下生成curl.so的文件。

3、復制curl.so文件到extensions的配置目錄,修改php.ini就好。

❽ linux能直接支持curl命令么

linux系統分好多種,一般情況是可以直接使用的,系統默認自帶。

如果沒有的話,可以直接安裝,安裝分為兩種

  1. yum源安裝通常至的centos、redhat系列例如yum -y install curl

    ubuntu 則用 apt-get install curl

  2. 源碼安裝,獲得安裝包,從網上直接下載或者其他途徑,這里直接wget

# wget http://curl.haxx.se/download/curl-7.20.0.tar.gz
--解壓到當前目錄(或者http://www.linuxidc.com/Linux/2014-08/106022.htm)
# tar -zxf curl-7.20.0.tar.gz
--進入解壓後的目錄內
# cd curl-7.17.1
--配置,指定安裝的目錄,這里是「/usr/local/curl」
# ./configure --prefix=/usr/local/curl
--
# make
--安裝
# make install
--安裝完畢

使用:
將curl命令加入環境變數,
命令行里執行(僅對本會話起作用,或者在.bash_profile、.bashrc文件里配置環境變數):
# export PATH=$PATH:/usr/local/curl/bin

設置環境變數
#vi /etc/profile 添加以下內容: export PATH=$PATH:/usr/local/curl/bin

❾ 怎樣添加curl/curl.h

解決辦法:
1、項目---屬性---配置屬性---VC++目錄,
在包含目錄中,添加頭文件所在路徑。(這里的頭文件所在路勁是"curl「目錄的相對或絕對路徑)
2、然後再使用#include "curl/curl.h"即可

❿ php curl登錄QQ空間留言點贊源碼

不能發地址,我發現的地方有兩個,一個是e網齋貼吧裡面有人發過,一個是大神網上有下載

熱點內容
中信銀行信用卡激活後密碼是多少 發布:2024-10-25 17:28:31 瀏覽:505
cocos2d30編譯 發布:2024-10-25 17:20:51 瀏覽:993
app直播平台源碼 發布:2024-10-25 17:19:57 瀏覽:223
asp文件上傳帶進度條 發布:2024-10-25 17:19:54 瀏覽:656
mp4反編譯軟體 發布:2024-10-25 16:47:33 瀏覽:998
哪個是提升電腦幀數的配置 發布:2024-10-25 16:43:45 瀏覽:95
以一種訪問許可權不允許的方式 發布:2024-10-25 16:38:32 瀏覽:404
嵌入式linux開發環境搭建 發布:2024-10-25 16:26:51 瀏覽:325
奧迪a4l乞丐版什麼配置 發布:2024-10-25 16:20:33 瀏覽:411
python讀取txt文件數據 發布:2024-10-25 16:07:36 瀏覽:23