外部库依赖以及 编译

目录树:

.
├── Makefile
├── outlib
└── src
    ├── pkg
    │   ├── http-parser-2.7.1.tar.gz
    │   ├── jansson-2.9.tar.gz
    │   ├── json2pb-master-master.zip
    │   ├── libbacktrace-master.zip
    │   ├── libunwind-1.1.tar.gz
    │   ├── php-5.6.25.tar.gz
    │   ├── protobuf-2.5.0.tar.gz
    │   ├── Python-2.7.12.tgz
    │   ├── setuptools-32.0.0.tar.gz
    │   └── zookeeper-3.4.8.tar.gz
    └── tmp

Makefile 文件:

OUTLIBDIR=$(shell pwd)
ZOOKEEPER_TAR_PATH=$(OUTLIBDIR)/src/pkg/zookeeper-3.4.8.tar.gz
JANSSON_TAR_PATH=$(OUTLIBDIR)/src/pkg/jansson-2.9.tar.gz
LIBUNWIND_TAR_PATH=$(OUTLIBDIR)/src/pkg/libunwind-1.1.tar.gz
LIBBACKTRACE_TAR_PATH=$(OUTLIBDIR)/src/pkg/libbacktrace-master.zip
HTTP_PARSER_TAR_PATH=$(OUTLIBDIR)/src/pkg/http-parser-2.7.1.tar.gz
JSON2PB_TAR_PATH=$(OUTLIBDIR)/src/pkg/json2pb-master-master.zip
PHP_TAR_PATH=$(OUTLIBDIR)/src/pkg/php-5.6.25.tar.gz
PROTOBUF_TAR_PATH=$(OUTLIBDIR)/src/pkg/protobuf-2.5.0.tar.gz
PYTHON_TAR_PATH=$(OUTLIBDIR)/src/pkg/Python-2.7.12.tgz
SETUPTOOLS_TAR_PATH=$(OUTLIBDIR)/src/pkg/setuptools-32.0.0.tar.gz
R3C_TAR_PATH=$(OUTLIBDIR)/src/pkg/r3c-master.zip

all: zookeeper jansson libunwind libbacktrace json2pb python setuptools http_parser protobuflib php r3c

zookeeper:
	if [ ! -d "./outlib/zookeeper" ]; then \
		-rm ./outlib/zookeeper -rf; \
		mkdir -p ./outlib/zookeeper; \
		tar -zxvf $(ZOOKEEPER_TAR_PATH) -C ./src/tmp/; \
		cd ./src/tmp/zookeeper*/src/c; \
		./configure --prefix=$(OUTLIBDIR)/outlib/zookeeper; make; make install; \
	fi

jansson:
	if [ ! -d "./outlib/jansson" ]; then \
		-rm ./outlib/jansson -rf; \
		mkdir -p ./outlib/jansson; \
		tar zxvf $(JANSSON_TAR_PATH) -C ./src/tmp/; \
		cd ./src/tmp/jansson*/; \
		./configure --prefix=$(OUTLIBDIR)/outlib/jansson; make; make install; \
	fi

libunwind:
	if [ ! -d "./outlib/libunwind" ]; then \
		-rm ./outlib/libunwind -rf; \
		mkdir -p ./outlib/libunwind; \
		tar zxvf $(LIBUNWIND_TAR_PATH) -C ./src/tmp/; \
		cd ./src/tmp/libunwind*; \
		./configure --prefix=$(OUTLIBDIR)/outlib/libunwind; make; make install; \
	fi

libbacktrace:
	if [ ! -d "./outlib/libbacktrace" ]; then \
		-rm ./outlib/libbacktrace -rf; \
		mkdir -p ./outlib/libbacktrace; \
		unzip -o $(LIBBACKTRACE_TAR_PATH) -d ./src/tmp/; \
		cd ./src/tmp/libbacktrace*; \
		./configure --prefix=$(OUTLIBDIR)/outlib/libbacktrace; make; make install; \
	fi 

json2pb:
	if [ ! -d "./outlib/json2pb" ]; then \
		mkdir -p ./outlib/json2pb; \
		unzip -o $(JSON2PB_TAR_PATH) -d ./src/tmp/; \
		mv ./src/tmp/json2pb* ./outlib/json2pb; \
	fi

python:
	if [ ! -d "./outlib/python" ]; then \
		mkdir -p ./outlib/python; \
		tar -xvf $(PYTHON_TAR_PATH) -C ./src/tmp/; \
		cd ./src/tmp/Python* ;\
		./configure --enable-shared --prefix=$(OUTLIBDIR)/outlib/python; \
		make; make install; \
	fi; 

setuptools: python
	if [ ! -f "./outlib/setuptools" ]; then \
		rm ./outlib/setuptools -rf; \
		mkdir -p ./outlib/setuptools; \
		tar zxvf $(SETUPTOOLS_TAR_PATH) -C ./src/tmp/; \
		cd ./src/tmp/setuptools*; \
		export LD_LIBRARY_PATH=$(OUTLIBDIR)/outlib/python/lib; \
		export PYTHONHOME=$(OUTLIBDIR)/outlib/python; \
		$(OUTLIBDIR)/outlib/python/bin/python bootstrap.py; \
		$(OUTLIBDIR)/outlib/python/bin/python setup.py install; \
		cd -; \
	fi

http_parser:
	if [ ! -d "./outlib/http-parser" ]; then \
		-rm ./outlib/http-parser -rf; \
		tar zxvf $(HTTP_PARSER_TAR_PATH) -C ./src/tmp/; \
		mv ./src/tmp/http-parser* ./outlib/http-parser; \
	fi

php:
	if [ ! -d "./outlib/php" ]; then \
		rm ./outlib/php -rf; \
		tar -zxvf $(PHP_TAR_PATH) -C ./src/tmp/; \
		cd ./src/tmp/php* ;\
		./configure --enable-debug --without-pear --disable-xmlreader --disable-xmlwriter --disable-xml --disable-libxml --disable-dom --disable-simplexml --enable-sockets --enable-maintainer-zts --disable-cgi --enable-json --enable-cli --enable-embed --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-pdo -- prefix=$(OUTLIBDIR)/outlib/php; \
		make; make install; \
	fi

protobuflib: python setuptools
	@if [ ! -f "./outlib/pb/libprotobuf.a" ]; then \
		tar zxvf $(PROTOBUF_TAR_PATH) -C ./src/tmp/; \
		cd ./src/tmp/protobuf*; \
		./configure CFLAGS=-fPIC CPPFLAGS=-fPIC CXXFLAGS=-fPIC --prefix=$(OUTLIBDIR)/outlib/pb;\
		make; make install; \
		/bin/sh ./libtool --tag=CXX   --mode=link g++ -pthread -Wall -Wwrite-strings -Woverloaded-virtual -Wno-sign-compare -O2 -g -DNDEBUG -pthread  -o protoc src/main.o -lpthread ./src/.libs/libprotoc.a ./src/.libs/libprotobuf.a -lz; \
		export LD_LIBRARY_PATH=$(OUTLIBDIR)/outlib/python/lib; \
		export PYTHONHOME=$(OUTLIBDIR)/outlib/python; \
		$(OUTLIBDIR)/outlib/python/bin/python setup.py build; \
		$(OUTLIBDIR)/outlib/python/bin/python setup.py install; \
		cp $(OUTLIBDIR)/src/tmp/protobuf-*/protoc $(OUTLIBDIR)/outlib/pb; \
	fi

r3c:
	@if [ ! -f "./outlib/r3c" ]; then \
		unzip -o $(R3C_TAR_PATH) -d ./outlib/; \
		mv ./outlib/r3c* ./outlib/r3c; \
		cd ./outlib/r3c/; \
		make libr3c.a; \
	fi

clean:
	rm -rf $(OUTLIBDIR)/outlib/*

 

转载于:https://my.oschina.net/tsh/blog/1558007

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值