zoukankan      html  css  js  c++  java
  • 小白使用开源共享库 (C使用zeromq)

    本篇介绍如何创建C服务器程序并且使用一个开源共享库——zeromq(简称zmq)

    zmq的安装方法参考:centos安装zeromq(0mq, ZeroMQ, ØMQ)

    1 创建文件夹 mkdir use_zmq

    2 cd use_zmq去到新文件夹下。同样新建use_zmq/app use_zmq/lib use_zmq/include三个文件夹

    3 zmq成功安装后,/usr/local/include 会有zmq的头文件,/usr/local/lib会有zmq的库文件

      将头文件拷贝到use_zmq/include 库文件拷贝到use_zmq/lib

    4 app下新建main.c

    #include <stdio.h>
    #include <zmq.h>
    
    int
    main(int argc, char** argv)
    {
        void* context = zmq_init(1);
        return 0;
    }

    gcc main.c会报如下错误 

    /tmp/cc2zNSZ3.o: In function `main':
    main.c:(.text+0x19): undefined reference to `zmq_init'
    collect2: ld returned 1 exit status

    zmq_init不认识?! 原因是没有找到zmq库。

    5 加入zmq库

      gcc main.c -I../include -L../lib -lzmq

      编译成功

      -L../lib -lzmq告诉gcc编译器,去../lib路径下去找 -lzmq(-lzmq等价于libzmq.so)

    6 使用makefile快速干净的完成工作

      以前我们写过Make.define(小白学makefile)现在就派上用场了,拷贝过来稍加改造

      Make.define 与app是同级目录

    # write by jogger
    
    CC = gcc
    CFLAGS = -I../include -g -O2 -Wall
    LIBS = -L../lib -lzmq
    
    CLEANFILES = core core.* *.core *.o *.out

     然后去app目录下编写Makefile (这个文件甚至不需要改造,照搬就OK)

    include ../Make.defines
    
    PROGS = main
    
    all = ${PROGS}
    
    main: main.o
            ${CC} ${CFLAGS} -o $@ main.o ${LIBS}
    
    
    clean:
            rm -f ${PROGS} ${CLEANFILES}

    去app目录,敲下神圣的make,编译通过。清空编译信息make clean就可以搞定。然后再make,又编译一次,再clean,再make。。。爽啊(个人就是喜欢绿色的文件名)

    6 运行

     光编译完不行,还得运行啊。先试着运行了一下发现有问题

     ./main: error while loading shared libraries: libzmq.so.1: cannot open shared object file: No such file or directory

     这时候就该搬书了,查一查看一看。有很多博文也讲了LD_LIBRARY_PATH=../lib就行,可是几经周折才发现原来光这样不行还得export

     export LD_LIBRARY_PATH=../lib这样会告诉系统去哪里找我们的zmq库。../lib就是库所在的路径。

     再次执行,通过。

  • 相关阅读:
    自适应图形的绘制
    红色椭圆、蓝色正方形、黄色三角形、紫色五角星
    [2020牛客寒假算法基础集训营2]G-判正误
    [2020牛客寒假算法基础集训营1]I-nico和niconiconi
    [2020牛客寒假算法基础集训营1]H-nozomi和字符串
    [2020牛客寒假算法基础集训营1]A-honoka和格点三角形
    约瑟夫环以及其变种集合
    unsign long long 与 long long
    【POJ-3279】Fliptile
    B--Bookshelf 2
  • 原文地址:https://www.cnblogs.com/jogger/p/2547557.html
Copyright © 2011-2022 走看看