zoukankan      html  css  js  c++  java
  • one makefile file

    #gcc test.cpp -L. -Wl,-Bdynamic -ltestlib -Wl,-Bstatic -ltestlib  -Wl,-Bdynamic 
    #make clean; make init; make SERVER_NAME=krc_search
    #make clean; make init; make SERVER_NAME=krc_feedback
    
    CC=g++
    
    OBJ_PATH=./objs
    SERVER_SRC = $(wildcard *.cpp)
    SERVER_OBJ = $(patsubst %.cpp, $(OBJ_PATH)/%.o, $(SERVER_SRC))
    
    INCDIR= -I/usr/local/freetds0.91/include 
            -I/usr/local/include 
            -I/usr/include 
            -I../Component/inc 
            -I../Component/inc/jsoncpp 
            -I../redis-2.6.13/deps -I./
    
    LIBDIR= -L/usr/lib64 -L/usr/lib64/mysql -L/usr/local/freetds0.91/lib -L../Component/inc
    
    SOLIBS= -lcrypto -lcurl -lmysqlclient -lsybdb
    
    WLPATH= -Wl,--rpath=/usr/local/freetds0.91/lib 
            -Wl,--rpath=/usr/lib64/boost 
            -Wl,--rpath=/usr/local/lib 
            -Wl,--rpath=/usr/lib 
            -Wl,--rpath=/usr/lib64/mysql 
            -Wl,--rpath=/usr/local/freetds0.91/lib
    
    ARLIBS= -Wl,-Bstatic ../Component/inc/libcomponent.a 
            -Wl,-Bstatic /usr/lib64/boost/libboost_system.a 
            -Wl,-Bstatic /usr/lib64/boost/libboost_thread.a 
            -Wl,-Bstatic /usr/lib64/boost/libboost_regex.a 
            -Wl,-Bstatic /usr/local/lib/libevent.a 
            -Wl,-Bstatic /usr/local/freetds0.91/lib/libsybdb.a 
            -Wl,-Bstatic ../Component/inc/jsoncpp/libjsoncpp.a 
            -Wl,-Bstatic ../redis-2.6.13/deps/hiredis/libhiredis.a
    
    $(SERVER_NAME):$(SERVER_OBJ)
    	$(CC) -Wall -pthread -D KRC_SERVER_NAME=$(SERVER_NAME)_FLAG -g -o $@ $(INCDIR) $(WLPATH) $^ $(ARLIBS) $(LIBDIR) -Wl,-Bdynamic $(SOLIBS)
    
    init:
    	@mkdir -p ./objs
    
    unit_test: CommonUtil.cpp testUtil/DgramSock.cpp testUtil/TestUtil.cpp
    	$(CC) -pthread  -g -o $@ $(INCDIR) $(WLPATH) $^ $(ARLIBS) $(LIBDIR) -Wl,-Bdynamic $(SOLIBS)
    
    clean:
    	rm -rf *.o krc_search unit_test krc_feedback objs
    
    $(SERVER_OBJ):$(OBJ_PATH)/%.o:%.cpp
    	$(CC) -c -g -D KRC_SERVER_NAME=$(SERVER_NAME)_FLAG $(INCDIR) $< -o $@
        
    help:
    	@echo "make clean; make init; make SERVER_NAME=krc_search"
    	@echo "make clean; make init; make SERVER_NAME=krc_feedback"
    

    注意:动态库与静态库的混合链接

    Linux默认的链接是动态库,找不到动态库的情况下才会选择静态库;

    使用方式为:gcc test.cpp -L. -ltestlib

    如果当前目录有两个库libtestlib.so libtestlib.a 则肯定是连接libtestlib.so。如果要指定为连接静态库;
    使用方式为:gcc test.cpp -L. -static -ltestlib

    当对动态库与静态库混合连接的时候,使用-static会导致所有的库都使用静态连接的方式。这时需要作用-Wl的方式:
    gcc test.cpp -L. -Wl,-Bstatic -ltestlib  -Wl,-Bdynamic -ltestlib

    另外还要注意系统的运行库使用动态连接的方式,所以当动态库在静态库前面连接时,必须在命令行最后使用动态连接的命令才能正常连接,如:
    gcc test.cpp -L. -Wl,-Bdynamic -ltestlib -Wl,-Bstatic -ltestlib  -Wl,-Bdynamic

    from:http://blog.csdn.net/gdutliuyun827/article/details/17320599

  • 相关阅读:
    【MySQL】MySQL的Sequence
    【Spring】Junit加载Spring容器作单元测试
    【Java】JDBC连接MySQL
    【Java】斐波那契数列(Fibonacci Sequence、兔子数列)的3种计算方法(递归实现、递归值缓存实现、循环实现、尾递归实现)
    【Java】Map杂谈,hashcode()、equals()、HashMap、TreeMap、LinkedHashMap、ConcurrentHashMap
    【Java】常见的Set类型,HashSet、TreeSet、LinkedHashSet
    【数据结构和算法】选择排序
    【数据结构与算法】插入排序
    【数据结构与算法】冒泡排序
    【Web】写个HTML页面去调试HTTP接口方便些
  • 原文地址:https://www.cnblogs.com/zhangzl/p/4919953.html
Copyright © 2011-2022 走看看