Aria2c开源库makefile文件的编写

开源库链接:https://github.com/aria2/aria2.git

前言

     这个库本身没有提供makefile文件,而是使用configure.ac和makefile.am文件自动生成makefile。本文通过学习其自动生成的makefile文件,自己尝试写一个makefile,编译整个项目。

    注:使用mingw64编译器,生成windows上可执行的aria2c.exe可执行文件(其他平台类似)。

一、安装相关库文件   

 通过查看对应的文档:https://aria2.github.io/manual/en/html/README.html#how-to-build,下载了并安装了相关库文件,具体可以参考Linux:https://blog.csdn.net/qq_33850438/article/details/80199588

gmp-6.1.2.tar.lz
expat-2.2.0.tar.bz2
sqlite-autoconf-3160200.tar.gz
zlib-1.2.11.tar.gz
c-ares-1.12.0.tar.gz
libssh2-1.8.0.tar.gz

二、编译之前相关准备工作

需要获取通过工具./configure生成一个conifg.h文件(其作用影响代码的编译,哪些模块的代码需要加入,哪些代码不需要加入),同时使用mingw-config文件查看相关库安装情况,环境等作用,通过这个也能知道链接时候需要的一些库以及所对应的选项。

configure: summary of build options:

Build:          x86_64-pc-linux-gnu
Host:           x86_64-w64-mingw32
Target:         x86_64-w64-mingw32
Install prefix: /usr/local/x86_64-w64-mingw32
CC:             x86_64-w64-mingw32-gcc
CXX:            x86_64-w64-mingw32-g++
CPP:            x86_64-w64-mingw32-gcc -E
CXXFLAGS:       -g -O2
CFLAGS:         -g -O2
CPPFLAGS:       -I/usr/local/x86_64-w64-mingw32/include
LDFLAGS:        -L/usr/local/x86_64-w64-mingw32/lib
LIBS:           
DEFS:           -DHAVE_CONFIG_H
CXX1XCXXFLAGS:   -std=c++11 
EXTRACXXFLAGS:   -pipe
EXTRACFLAGS:     -pipe
EXTRACPPFLAGS:   -D_POSIX_C_SOURCE=1
EXTRALDFLAGS:    -Wl,--dynamicbase -Wl,--nxcompat -all-static
EXTRALIBS:      -lws2_32 -lwsock32 -lgdi32 -lwinmm -liphlpapi -lpsapi 
WARNCXXFLAGS:   
LibUV:          no (CFLAGS='' LIBS='')
SQLite3:        yes (CFLAGS='-I/usr/local/x86_64-w64-mingw32/include' LIBS='-L/usr/local/x86_64-w64-mingw32/lib -lsqlite3 -lpthread')
SSL Support:    yes
AppleTLS:       no (LDFLAGS='')
WinTLS:         yes (LIBS='-lcrypt32 -lsecur32 -ladvapi32')
GnuTLS:         no (CFLAGS='' LIBS='')
OpenSSL:        no (CFLAGS='' LIBS='')
CA Bundle:      
LibNettle:      no (CFLAGS='' LIBS='')
LibGmp:         yes (CFLAGS='' LIBS='-lgmp')
LibGcrypt:      no (CFLAGS='' LIBS='')
LibXML2:        no (CFLAGS='' LIBS='')
LibExpat:       yes (CFLAGS='-I/usr/local/x86_64-w64-mingw32/include' LIBS='-L/usr/local/x86_64-w64-mingw32/lib -lexpat')
LibCares:       yes (CFLAGS='-I/usr/local/x86_64-w64-mingw32/include' LIBS='-L/usr/local/x86_64-w64-mingw32/lib -lcares -lws2_32')
Zlib:           yes (CFLAGS='-I/usr/local/x86_64-w64-mingw32/include' LIBS='-L/usr/local/x86_64-w64-mingw32/lib -lz')
Libssh2:        yes (CFLAGS='-I/usr/local/x86_64-w64-mingw32/include' LIBS='-L/usr/local/x86_64-w64-mingw32/lib -lssh2 -lws2_32 -lbcrypt -lcrypt32 -lws2_32 -lbcrypt -lcrypt32 -lz')
Tcmalloc:       no (CFLAGS='' LIBS='')
Jemalloc:       no (CFLAGS='' LIBS='')
Epoll:          no
Bittorrent:     yes
Metalink:       yes
XML-RPC:        yes
Message Digest: internal
WebSocket:      yes (CFLAGS='-I$(top_builddir)/deps/wslay/lib/includes -I$(top_srcdir)/deps/wslay/lib/includes' LIBS='$(top_builddir)/deps/wslay/lib/libwslay.la')
Libaria2:       no (shared=yes static=no)
bash_completion dir: ${datarootdir}/doc/${PACKAGE_TARNAME}/bash_completion
Static build:   yes

三、编写makefile

     可以参考:https://blog.csdn.net/qq_33850438/article/details/80199588  将自动生成的makefile文件的信息打印出来(操作:make -n>makefilelog.txt,这个操作不会编译文件,会将makefile文件编译时候的信息打印出来,然后通过查看makefilelog.txt)以下截取一小片段。

echo "  CXX     " A2STR.lo;depbase=
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值