小白使用开源共享库 (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就是库所在的路径。

 再次执行,通过。

posted on   jogger  阅读(2130)  评论(0编辑  收藏  举报

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述
< 2012年6月 >
27 28 29 30 31 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
1 2 3 4 5 6 7

导航

统计

点击右上角即可分享
微信分享提示