LCM通信包在Windows 64位环境下的编译
首先,什么是LCM?
简而言之,是一个UDP传输方案。也就是在UDP外围做了一层封装,使得数据的传输变得比较的方便。
其次,一般在什么环境下用LCM?
在无人车系统中。而且操作系统多为linux,因此在linux编译这玩意据说有种水到渠成的感觉。
最后,为什么要在windows下来搞这套东西,而且又要在32搞定的情况下在64位上再搞一遍?
我不告诉你。
因为应用场景比较小众,估计这注定是一篇浏览量很悲剧的文章。然而哪怕只有一个人用到,这篇文章也有意义,因为网上的中文材料关于64位编译LCM这部分可以说是空白的,英文材料也很少,因此估计能帮你节省下少则一天,多则一月的时间。
废话就说到这,下面上流程:
参考网站:https://github.com/lcm-proj/lcm/issues/99(这个网页几乎包含能参考的所有信息,请无论如何先仔细看一遍)
安装python(64位版本)
地址:https://www.python.org/downloads/release/python-2715/
本人装的是2.7.15版本
装完之后添加环境变量
PYTHONPATH=C:\Python27;C:\Python27\Scripts;C:\Python27\Lib;C:\Python27\DLLs;C:\Python27\Lib\lib-tk;(注意这里是你安装Python的实际位置)
把PYTHONPATH环境变量添加到Path环境变量中,即
Path=%PYTHONPATH%
弄完之后可以在控制台输入python测试下是不是成功配置了。
到此关于Python相关的配置就完成了。
下载安装CMake
地址:https://cmake.org/download/
弄完后把bin文件夹也添加进环境变量Path中,也同样可以在控制台输入CMake测试下:
下载并安装MSYS2(小型GNU环境,为后面使用GCC编译glib2做平台性质的准备)
地址:http://www.msys2.org/
先换源(速度从龟速到正常),具体参考下面博客:https://blog.csdn.net/liyuanbhu/article/details/56496501
环境初始化,参考下面博客(本人感觉不做应该也可以,有勇士请验证下):
https://blog.csdn.net/yehuohan/article/details/52090282
因为后面就用到mingw-w64,因此直接安装mingw-w64的环境包
pacman -S mingw-w64-x86_64-toolchain
安装glib2
pacman -S glib2 glib2-devel mingw-w64-x86_64-glib2
下载LCM源码包,地址:https://github.com/lcm-proj/lcm
在github文件夹下载的源码包下新建一个叫做build的文件夹。
用管理员权限打开控制台然后cd到这里,输入下面的命令(本人要编译的是VS2017的64位版本,因此命令写为“Visual Studio 15 2017 Win64”,这里请做相应修改。另外,具体路径也要做修改)
cmake .. -G"Visual Studio 15 2017 Win64" -DCMAKE_BUILD_TYPE=Release -DLCM_ENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=../build -DGLIB2_GLIBCONFIG_INCLUDE_DIR="E:\lcm\msys64\mingw64\lib\glib-2.0\include" -DGLIB2_GLIB_INCLUDE_DIR="E:\lcm\msys64\mingw64\include\glib-2.0" -DGLIB2_GLIB_LIBRARY="E:\lcm\msys64\mingw64\lib\libglib-2.0.dll.a" -DGLIB2_GLIB_RUNTIME="E:\lcm\msys64\mingw64\bin\libglib-2.0.dll"
完成上面一步会在build文件夹下生成VS的文件,打开"lcm.sln",直接编译,发现出现了大量的错误。
可以发现都跟"mswsock.h"这个文件相关,看文件位置发现其是系统相关文件,不应该出错,因此猜测是头文件的相互包含出错。定位到包含该头文件的地方,发现只有“WinPorting.cpp”包含该文件。
相关程序段如下:
#define _WIN32_WINNT 0x0501
#include <Mswsock.h>
#include <stdio.h>
#include <winsock2.h>
修改为:
#define _WIN32_WINNT 0x0501
#include <winsock2.h>
#include <Mswsock.h>
#include <stdio.h>
再次编译,主体OK了。
残留问题如下:
因为是跟go相关的东西,没有用到,所以本人选择了无视,如果需要处理,下面这个文章能解决第一个问题,
https://blog.csdn.net/sinat_36053757/article/details/68487662?locationNum=3&fps=1
至于F_OK这个问题,参考网址如下:
https://blog.csdn.net/u012005313/article/details/50688257
就是在相应的位置把加上。
#define F_OK 0
就可以了
完成编译之后,可以将工程里面的“lcm-example”设为启动项,然后把下面的dll扔进“liblcm-test”目录,然后运行即可看到结果
另外写文章累人,写代码掉头发,如果觉得文章有帮助,哈哈哈
LCM通信包在Windows 64位环境下的编译相关推荐
- linux下编译openjdk7,Ubuntu 14.04.3 64位环境下OpenJDK7编译
系统环境:Ubuntu 14.04.3 -amd64 in VMWare 1.安装openjdk7依赖 sudo apt-get build-dep openjdk-7 sudo apt-get in ...
- win10,64位环境下curl7下载安装和配置详细图文教程(亲测有效)
win10,64位环境下curl7下载安装和配置教程 一.前期准备: (1)windows10,64位: (2)python3.8 二.下载: 三.安装: 四.环境变量配置: (1)新建 ==CURL ...
- Win7系统64位环境下使用Apache——下载mod_jk
转载请注明出处:http://blog.csdn.net/dongdong9223/article/details/70313329 本文出自[我是干勾鱼的博客] 之前在几篇文章: Win7系统64位 ...
- python2.7安装教程win7_win7 64位环境下,为python2.7 安装pip
第一步: 安装python并配置好环境变量 第二步: 下载setuptools源码setuptools-38.5.1.zip,地址:https://pypi.python.org/pypi/setup ...
- 实况10硬盘版在win7,64位环境下如何使用
在XP,或者win7,32位环境下,实况10免安装版只需要双击一个注册信息,将数据信息添加到注册表中即可,但是在64位中,这样做后,打开软件会弹出提示:the game is not properly ...
- windows7 64位环境下安装apache+mysql5.5+php7经验
安装环境时遇到的一写问题现总结如下: 整体都是 windows64位环境下 vc14 首先电脑上安装的是vs2015环境 安装顺序: 1.首先安装apache2.4安装包,解压即可 2.php7压 ...
- 外网win10 64位环境下 为内网win7 32位安装三方包的最靠谱手段:python64位、32位全安装。...
经过一周的各种折磨,如题.以下是我的经验和教训. 我的外网是win10 64位,内网环境win7 32位.由于未知原因,anaconda无法安装!!! 其实最靠谱的安装三方包的还是whl包.但是很有可 ...
- Windows7 64位环境下Python-igraph环境配置
本文为作者原创,转载请注明出处(http://www.cnblogs.com/mar-q/)by 负赑屃 其实配置很简单,但是网上的几个都不咋靠谱.如果并非利益相关,可以不用阅读本文,但是http:/ ...
- 64位环境下解决apache对中文网址的支持问题
转自:http://hi.baidu.com/ct543/blog/item/938cdb58c02ae28f800a18d5.html 此方案用于解决apache软件对中文网址的支持问题,例如支持w ...
最新文章
- 别人总结的批处理技巧
- 【2013年总结】 向着IT前进
- 可以不封神,但是不能不修炼——亚特兰蒂斯之神特斯拉的启示
- 机器学习入门系列三(关键词:逻辑回归,正则化)
- prometheus的搭建与使用
- 赵鹏计算机专业,安徽大学计算机科学与技术学院导师介绍:赵鹏
- MySQL的sql_mode解析与设置
- Swagger自动接口文档生成框架————springboot整合swagger总结
- 如何在Linux中将用户添加到组
- php file_get_contents()请求某个链接
- oracle 还原归档,ORACLE RMAN 还原归档日志
- 前端实现动画的6种方式详解
- android 获取sim卡信息list_提醒:手机要设置SIM卡密码!如何设置?有何用处?攻略来了...
- 自己动手打造属于自己的智能家居(二)
- windows下安装完MySQL,为什么cmd不识别命令?
- 4dda在linux中的意思,LINUX基础学习之基础命令(4)和 文件的inode信息 --2019-11-28...
- Oracle客户端工具安装(PL/SQL Developer 和 instantclient)
- AutoCAD2010安装教程
- TV版应用包名 TV常用apk包名 (当贝市场下载)
- python爬取微博恶评_用python写网络爬虫-爬取新浪微博评论
热门文章
- Linux下Ngnix的安装与配置
- Unity从零单排 day #1
- 网络 http(基于tcp协议)
- 3D模型下载 - 3D模型免费下载
- 2016全国大学生信息安全竞赛-web-WriteUp
- SQL关键字 union、intersect、except用法
- AppEx LotWan广域网加速系统为办公系统进行网络加速
- 提分必练,中创教育PMP全真模拟题分享
- python助你高效办公_高效办公必备:python—— 30分钟帮你干完一天的工作!
- fusioncharts mysql_支持XML和JSON数据的图表控件FusionCharts XT