当前位置:首页 » 操作系统 » 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网斋贴吧里面有人发过,一个是大神网上有下载

热点内容
clinuxsqlite 发布:2024-10-25 19:30:02 浏览:679
值班发布源码 发布:2024-10-25 19:23:50 浏览:369
php实现注册登陆 发布:2024-10-25 19:22:56 浏览:545
android开发库 发布:2024-10-25 18:50:28 浏览:231
优酷路由宝存储 发布:2024-10-25 18:41:37 浏览:934
pythoncmdb 发布:2024-10-25 18:41:29 浏览:200
安卓触控屏不灵怎么办 发布:2024-10-25 17:31:22 浏览:872
中信银行信用卡激活后密码是多少 发布:2024-10-25 17:28:31 浏览:507
cocos2d30编译 发布:2024-10-25 17:20:51 浏览:996
app直播平台源码 发布:2024-10-25 17:19:57 浏览:225