6543 发表于 2017-1-16 17:10:06

Linux 源码编译安装curl

系统环境:Ubuntu 环境编译安装curl

开始编译安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
chunli@Linux:~$ mkdir curl
chunli@Linux:~$ cd curl/
chunli@Linux:~/curl$ tar xf curl-7.51.0.tar.gz
chunli@Linux:~/curl$ cd curl-7.51.0/
chunli@Linux:~/curl/curl-7.51.0$
chunli@Linux:~/curl/curl-7.51.0$ make
chunli@Linux:~/curl/curl-7.51.0$ echo $?
0
chunli@Linux:~/curl/curl-7.51.0$ sudo make install
chunli@Linux:~/curl/curl-7.51.0$ echo $?
0
chunli@Linux:~/curl/curl-7.51.0$ cd ..
chunli@Linux:~/curl$ rm -rf curl-7.51.0*


测试可以找到curl动态库库,OK,
chunli@Linux:~$ gcc -l curl
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 18 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 19 has invalid symbol index 21
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_line): relocation 0 has invalid symbol index 2
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crt1.o:在函数‘_start’中:
(.text+0x20):对‘main’未定义的引用
collect2: error: ld returned 1 exit status
chunli@Linux:~$








1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
chunli@Linux:~$ curl --help
Usage: curl <url>
Options: (H) means HTTP/HTTPS only, (F) means FTP only
   --anyauth       Pick "any" authentication method (H)
-a, --append      Append to target file when uploading (F/SFTP)
   --basic         Use HTTP Basic Authentication (H)
   --cacert FILE   CA certificate to verify peer against (SSL)
   --capath DIR    CA directory to verify peer against (SSL)
-E, --cert CERT[:PASSWD]Client certificate file and password (SSL)
   --cert-status   Verify the status of the server certificate (SSL)
   --cert-type TYPECertificate file type (DER/PEM/ENG) (SSL)
   --ciphers LISTSSL ciphers to use (SSL)
   --compressed    Request compressed response (using deflate or gzip)
-K, --config FILE   Read config from FILE
   --connect-timeout SECONDSMaximum time allowed for connection
   --connect-to HOST1:PORT1:HOST2:PORT2 Connect to host (network level)
-C, --continue-at OFFSETResumed transfer OFFSET
-b, --cookie STRING/FILERead cookies from STRING/FILE (H)
-c, --cookie-jar FILEWrite cookies to FILE after operation (H)
   --create-dirs   Create necessary local directory hierarchy
   --crlf          Convert LF to CRLF in upload
   --crlfile FILEGet a CRL list in PEM format from the given file
-d, --data DATA   HTTP POST data (H)
   --data-raw DATAHTTP POST data, '@' allowed (H)
   --data-ascii DATAHTTP POST ASCII data (H)
   --data-binary DATAHTTP POST binary data (H)
   --data-urlencode DATAHTTP POST data url encoded (H)
   --delegation STRINGGSS-API delegation permission
   --digest      Use HTTP Digest Authentication (H)
   --disable-eprtInhibit using EPRT or LPRT (F)
   --disable-epsvInhibit using EPSV (F)
   --dns-servers   DNS server addrs to use: 1.1.1.1;2.2.2.2
   --dns-interfaceInterface to use for DNS requests
   --dns-ipv4-addrIPv4 address to use for DNS requests, dot notation
   --dns-ipv6-addrIPv6 address to use for DNS requests, dot notation
-D, --dump-header FILEWrite the headers to FILE
   --egd-file FILEEGD socket path for random data (SSL)
   --engine ENGINECrypto engine (use "--engine list" for list) (SSL)
   --expect100-timeout SECONDS How long to wait for 100-continue (H)
-f, --fail          Fail silently (no output at all) on HTTP errors (H)
   --false-start   Enable TLS False Start.
-F, --form CONTENTSpecify HTTP multipart POST data (H)
   --form-string STRINGSpecify HTTP multipart POST data (H)
   --ftp-account DATAAccount data string (F)
   --ftp-alternative-to-user COMMANDString to replace "USER " (F)
   --ftp-create-dirsCreate the remote dirs if not present (F)
   --ftp-method Control CWD usage (F)
   --ftp-pasv      Use PASV/EPSV instead of PORT (F)
-P, --ftp-port ADRUse PORT with given address instead of PASV (F)
   --ftp-skip-pasv-ipSkip the IP address for PASV (F)
   --ftp-pret      Send PRET before PASV (for drftpd) (F)
   --ftp-ssl-ccc   Send CCC after authenticating (F)
   --ftp-ssl-ccc-mode ACTIVE/PASSIVESet CCC mode (F)
   --ftp-ssl-controlRequire SSL/TLS for FTP login, clear for transfer (F)
-G, --get         Send the -d data with a HTTP GET (H)
-g, --globoff       Disable URL sequences and ranges using {} and []
-H, --header LINE   Pass custom header LINE to server (H)
-I, --head          Show document info only
-h, --help          This help text
   --hostpubmd5 MD5Hex-encoded MD5 string of the host public key. (SSH)
-0, --http1.0       Use HTTP 1.0 (H)
   --http1.1       Use HTTP 1.1 (H)
   --http2         Use HTTP 2 (H)
   --http2-prior-knowledgeUse HTTP 2 without HTTP/1.1 Upgrade (H)
   --ignore-content-lengthIgnore the HTTP Content-Length header
-i, --include       Include protocol headers in the output (H/F)
-k, --insecure      Allow connections to SSL sites without certs (H)
   --interface INTERFACEUse network INTERFACE (or address)
-4, --ipv4          Resolve name to IPv4 address
-6, --ipv6          Resolve name to IPv6 address
-j, --junk-session-cookiesIgnore session cookies read from file (H)
   --keepalive-time SECONDSWait SECONDS between keepalive probes
   --key KEY       Private key file name (SSL/SSH)
   --key-type TYPEPrivate key file type (DER/PEM/ENG) (SSL)
   --krb LEVEL   Enable Kerberos with security LEVEL (F)
   --libcurl FILEDump libcurl equivalent code of this command line
   --limit-rate RATELimit transfer speed to RATE
-l, --list-only   List only mode (F/POP3)
   --local-port RANGEForce use of RANGE for local port numbers
-L, --location      Follow redirects (H)
   --location-trustedLike '--location', and send auth to other hosts (H)
   --login-options OPTIONSServer login options (IMAP, POP3, SMTP)
-M, --manual      Display the full manual
   --mail-from FROMMail from this address (SMTP)
   --mail-rcpt TOMail to this/these addresses (SMTP)
   --mail-auth AUTHOriginator address of the original email (SMTP)
   --max-filesize BYTESMaximum file size to download (H/F)
   --max-redirs NUMMaximum number of redirects allowed (H)
-m, --max-time SECONDSMaximum time allowed for the transfer
   --metalink      Process given URLs as metalink XML file
   --negotiate   Use HTTP Negotiate (SPNEGO) authentication (H)
-n, --netrc         Must read .netrc for user name and password
   --netrc-optionalUse either .netrc or URL; overrides -n
   --netrc-file FILESpecify FILE for netrc
-:, --next          Allows the following URL to use a separate set of options
   --no-alpn       Disable the ALPN TLS extension (H)
-N, --no-buffer   Disable buffering of the output stream
   --no-keepaliveDisable keepalive use on the connection
   --no-npn      Disable the NPN TLS extension (H)
   --no-sessionidDisable SSL session-ID reusing (SSL)
   --noproxy       List of hosts which do not use proxy
   --ntlm          Use HTTP NTLM authentication (H)
   --ntlm-wb       Use HTTP NTLM authentication with winbind (H)
   --oauth2-bearer TOKENOAuth 2 Bearer Token (IMAP, POP3, SMTP)
-o, --output FILE   Write to FILE instead of stdout
   --pass PASS   Pass phrase for the private key (SSL/SSH)
   --path-as-is    Do not squash .. sequences in URL path
   --pinnedpubkey FILE/HASHES Public key to verify peer against (SSL)
   --post301       Do not switch to GET after following a 301 redirect (H)
   --post302       Do not switch to GET after following a 302 redirect (H)
   --post303       Do not switch to GET after following a 303 redirect (H)
-#, --progress-barDisplay transfer progress as a progress bar
   --proto PROTOCOLSEnable/disable PROTOCOLS
   --proto-default PROTOCOLUse PROTOCOL for any URL missing a scheme
   --proto-redir PROTOCOLS   Enable/disable PROTOCOLS on redirect
-x, --proxy HOST[:PORT]Use proxy on given port
   --proxy-anyauthPick "any" proxy authentication method (H)
   --proxy-basic   Use Basic authentication on the proxy (H)
   --proxy-digestUse Digest authentication on the proxy (H)
   --proxy-negotiateUse HTTP Negotiate (SPNEGO) authentication on the proxy (H)
   --proxy-ntlm    Use NTLM authentication on the proxy (H)
   --proxy-header LINE Pass custom header LINE to proxy (H)
   --proxy-service-name NAMESPNEGO proxy service name
   --service-name NAMESPNEGO service name
-U, --proxy-user USER[:PASSWORD]Proxy user and password
   --proxy1.0 HOST[:PORT]Use HTTP/1.0 proxy on given port
-p, --proxytunnel   Operate through a HTTP proxy tunnel (using CONNECT)
   --pubkey KEY    Public key file name (SSH)
-Q, --quote CMD   Send command(s) to server before transfer (F/SFTP)
   --random-file FILEFile for reading random data from (SSL)
-r, --range RANGE   Retrieve only the bytes within RANGE
   --raw         Do HTTP "raw"; no transfer decoding (H)
-e, --referer       Referer URL (H)
-J, --remote-header-nameUse the header-provided filename (H)
-O, --remote-name   Write output to a file named as the remote file
   --remote-name-allUse the remote file name for all URLs
-R, --remote-time   Set the remote file's time on the local output
-X, --request COMMANDSpecify request command to use
   --resolve HOST:PORT:ADDRESSForce resolve of HOST:PORT to ADDRESS
   --retry NUM   Retry request NUM times if transient problems occur
   --retry-delay SECONDSWait SECONDS between retries
   --retry-max-time SECONDSRetry only within this period
   --sasl-ir       Enable initial response in SASL authentication
-S, --show-error    Show error. With -s, make curl show errors when they occur
-s, --silent      Silent mode (don't output anything)
   --socks4 HOST[:PORT]SOCKS4 proxy on given host + port
   --socks4a HOST[:PORT]SOCKS4a proxy on given host + port
   --socks5 HOST[:PORT]SOCKS5 proxy on given host + port
   --socks5-hostname HOST[:PORT]SOCKS5 proxy, pass host name to proxy
   --socks5-gssapi-service NAMESOCKS5 proxy service name for GSS-API
   --socks5-gssapi-necCompatibility with NEC SOCKS5 server
-Y, --speed-limit RATEStop transfers below RATE for 'speed-time' secs
-y, --speed-time SECONDSTrigger 'speed-limit' abort after SECONDS (default: 30)
   --ssl         Try SSL/TLS (FTP, IMAP, POP3, SMTP)
   --ssl-reqd      Require SSL/TLS (FTP, IMAP, POP3, SMTP)
-2, --sslv2         Use SSLv2 (SSL)
-3, --sslv3         Use SSLv3 (SSL)
   --ssl-allow-beastAllow security flaw to improve interop (SSL)
   --ssl-no-revoke    Disable cert revocation checks (WinSSL)
   --stderr FILE   Where to redirect stderr (use "-" for stdout)
   --tcp-nodelay   Use the TCP_NODELAY option
   --tcp-fastopenUse TCP Fast Open
-t, --telnet-option OPT=VALSet telnet option
   --tftp-blksize VALUESet TFTP BLKSIZE option (must be >512)
   --tftp-no-optionsDo not send TFTP options requests
-z, --time-cond TIME   Transfer based on a time condition
-1, --tlsv1         Use >= TLSv1 (SSL)
   --tlsv1.0       Use TLSv1.0 (SSL)
   --tlsv1.1       Use TLSv1.1 (SSL)
   --tlsv1.2       Use TLSv1.2 (SSL)
   --trace FILE    Write a debug trace to FILE
   --trace-ascii FILELike --trace, but without hex output
   --trace-time    Add time stamps to trace/verbose output
   --tr-encoding   Request compressed transfer encoding (H)
-T, --upload-file FILETransfer FILE to destination
   --url URL       URL to work with
-B, --use-ascii   Use ASCII/text transfer
-u, --user USER[:PASSWORD]Server user and password
   --tlsuser USERTLS username
   --tlspassword STRINGTLS password
   --tlsauthtype STRINGTLS authentication type (default: SRP)
   --unix-socket FILE    Connect through this Unix domain socket
-A, --user-agent STRINGSend User-Agent STRING to server (H)
-v, --verbose       Make the operation more talkative
-V, --version       Show version number and quit
-w, --write-out FORMATUse output FORMAT after completion
   --xattr         Store metadata in extended file attributes
-q, --disable       Disable .curlrc (must be first parameter)
chunli@Linux:~$






页: [1]
查看完整版本: Linux 源码编译安装curl