本人使用环境:
系统:ubuntu 16.04LTS
安装软件:cmake3.18 nanomsg-1.1.5
官网地址:https://nanomsg.org/
1、下载下来的nanomsg-1.1.5放到public文件中
解压源码:tar -xvzf nanomsg-1.1.5.tar.gz
2、在nanomsg-1.1.5文件夹输入sudo apt-get install cmake安装cmake
3、创建build文件夹用于存放cmake生成的makefile。进入build,camke编译,指定安装目录。
在build文件中新建nanomsg_x86_lib,存放待会编译得到的x86_lib、arm_lib
数据结构
cmake .. -DCMAKE_INSTALL_PREFIX=$PWD/nanomsg_x86_lib
/usr/local/ 是默认安装到的根目录,可以通过修改 CMAKE_INSTALL_PREFIX
变量的值来指定这些文件应该拷贝到哪个目录,这里我们指定到当前目录的nanomsg_x86_lib目录。
$PWD是当前路径
当前路径的nanomsg_x86_lib文件夹中,后期要用需要记住这个位置。
4、编译。cmake --build .
现在还是在build文件夹中
5、测试。ctest .
6、安装。把编译生成的库及相关头文件安装到nanomsg_x86_lib目录中。cmake --build . --target install
7,让生成的nanomsg动态链接库为系统所共享。ldconfig是一个动态链接库管理命令,其目的为了让动态链接库为系统所共享。sudo ldconfig
以下是测试
8、本人在Public文件单独创建一个test文件夹。用来放测试用例。到test文件夹,把测试用例放到这个文件夹中。官网的pipeline.c文件是测试用例。
官网用例源码:Getting Started with 'nanomsg'
https://nanomsg.org/gettingstarted/pipeline.html
根据自己的路径,输入指令:gcc pipeline.c -lnanomsg -o pipeline -I /home/spring/Public/nanomsg-1.1.5/build/nanomsg_x86_lib/include/ -L /home/spring/Public/nanomsg-1.1.5/build/nanomsg_x86_lib/include/
指令说明:
-I xxx:指定头文件路径。
-L xxx:指定库路径。
-lnanomsg:链接动态库nanomsg.so。
pipeline.c 编译的文件
pipeline 编译后生成的文件名字
第一个路径/home/spring/Public/nanomsg-1.1.5/build/nanomsg_x86_lib/include/是头文件路径
第二个路径/home/spring/Public/nanomsg-1.1.5/build/nanomsg_x86_lib/include/是库文件路径
注意:在第六步安装时候已经明确指出安装在nanomsg_x86_lib这个文件夹内。
运行测试:
./pipeline node0 ipc:///tmp/pipeline.ipc & node0=$! && sleep 1
运行可能会出现如下错误:
不能找到共享库文件 libtest_d.so
,加载失败。因为一般情况下Linux会在 /usr/lib
路径中搜索需要用到的库,而 libtest_d.so
库并不在这个路径下。
解决方法有两种:一种就是把这个文件拷贝至/usr/lib
路径下,但是一般不允许这样做,一般用户也不允许往这个路径里拷贝东西。另一种就是把当前路径增加为动态库的搜索路径,命令如:
根据自己文件路径输入:export LD_LIBRARY_PATH=/home/spring/Public/nanomsg-1.1.5/build/nanomsg_x86_lib/lib:$LD_LIBRARY_PATH
再运行:
./pipeline node0 ipc:///tmp/pipeline.ipc & node0=$! && sleep 1
./pipeline node1 ipc:///tmp/pipeline.ipc "Hello, World!"
./pipeline node1 ipc:///tmp/pipeline.ipc "Goodbye."
命令行出现如下结果就是成功了。
最后不要忘记关闭管道0