需要交叉编译libcurl,需要依赖openssl跟zlib。
编译libcurl时候出现libssl.so.1.1找不到问题。
源码官网:
https://curl.se/download.html
https://www.openssl.org/source/
https://www.openssl.org/source/
以下流程:
1.交叉编译openssl:
./config no-asm shared no-async --prefix=/home/cdr/work/third-party/openssl --cross-compile-prefix=arm-linux-gnueabihf-
make;make install
2.交叉编译zlib
./configure --prefix=/home/work/third-party/zlib --shared
修改makefile添加交叉编译工具(将CC,CPP等改为交叉编译工具链)
CC=arm-linux-gcc
CFLAGS=-O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN
#CFLAGS=-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7
#CFLAGS=-g -DZLIB_DEBUG
#CFLAGS=-O3 -Wall -Wwrite-strings -Wpointer-arith -Wconversion \
# -Wstrict-prototypes -Wmissing-prototypes
SFLAGS=-O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN
LDFLAGS=
TEST_LDFLAGS=-L. libz.a
LDSHARED=arm-linux-gcc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map
CPP=arm-linux-gcc -E
STATICLIB=libz.a
SHAREDLIB=libz.so
SHAREDLIBV=libz.so.1.2.11
SHAREDLIBM=libz.so.1
LIBS=$(STATICLIB) $(SHAREDLIBV)
AR=arm-linux-ar
ARFLAGS=rc
RANLIB=arm-linux-ranlib
LDCONFIG=ldconfig
LDSHAREDLIBC=-lc
TAR=tar
SHELL=/bin/sh
EXE=
prefix =/home/user/work/arm/zlib
exec_prefix =${prefix}
libdir =${exec_prefix}/lib
sharedlibdir =${libdir}
includedir =${prefix}/include
mandir =${prefix}/share/man
man3dir = ${mandir}/man3
pkgconfigdir = ${libdir}/pkgconfig
SRCDIR=
ZINC=
ZINCOUT=-I.
make;make install
3.交叉编译libcurl
./configure --prefix=/home/work/third-party/curl --host=arm-linux-gnueabihf CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ -with-ssl=/home/work/third-party/openssl --enable-shared --enable-static --disable-dict --disable-ftp CPPFLAGS="-I/home/work/third-party/openssl -I/home/work/third-party/openssl/include" LDFLAGS="-L/home/work/third-party/openssl/lib" LIBS="-ldl -lssl -lcrypto"
make;make install
**注意:**如果不加CPPFLAGS,LDFLAGS路径会出现报错,找不到libssl.so.1.1
warning: libssl.so.1.0.0, needed by …/lib/.libs/libcurl.so, not found (try using -rpath or -rpath-link)
warning: libcrypto.so.1.0.0, needed by …/lib/.libs/libcurl.so, not found (try using -rpath or -rpath-link)