OpenCPN + Ubuntu 18.04 源码编译

文章目录

  • 一、参考资料
  • 二、源码编译流程
  • 三、利用 IDE 编译
  • 四、利用 IDE 调试
  • 四、测试界面开发工具

一、参考资料

  1. OpenCPN - linux 编译参考链接。
  2. wxFormBuilder-github 链接

二、源码编译流程

  1. 安装依赖,没有报错。

    sudo apt-get install build-essential cmake gettext git-core gpsd gpsd-clients libgps-dev wx-common libwxgtk3.0-dev libglu1-mesa-dev libgtk2.0-dev wx3.0-headers libbz2-dev libtinyxml-dev libportaudio2 portaudio19-dev libcurl4-openssl-dev libexpat1-dev libcairo2-dev libarchive-dev liblzma-dev libexif-dev libelf-dev libsqlite3-dev
    
  2. 下载源码,使用码云加速。

    cd xxx #进入你想存放 opencpn 的文件夹
    git clone https://gitee.com/xxx/OpenCPN.git  #注意更换自己的码云仓库名 xxx
    

    下载速度极慢,使用码云克隆加速github。

    • 注册码云,右上角新建仓库加号,选择从 Github/Gitlab 导入仓库菜单。
    • Git 仓库 URL填入想 cloneGithub仓库,这里就是https://github.com/OpenCPN/OpenCPN,点击导入,后台处理一段时间后页面自动刷新会出现一模一样的仓库。
    • 利用码云进行 git clone,因为这里我建立的是私有仓库,需要输入我的账户名和密码,输入后下载速度很快,直接达到带宽上限。
  3. 编译源码,cmake ../无问题,显示 Configuring doneGenerating done,继续 make

    cd OpenCPN
    mkdir build && cd build```
    cmake ..
    make
    
  4. 没有问题,编译成功,测试以下能否直接运行编译好的可执行文件,运行成功,没有问题。

    ./opencpn
    

三、利用 IDE 编译

  1. 官方推荐了四个 IDE ( Code::Blocks / KDevelop / Eclipse / CDT ),我们按照官方命令,生成项目文件,使用 codeblocks 首先测试:

    cmake -G "CodeBlocks - Unix Makefiles" ../
    
  2. 此时查看 build 文件夹下已经有了 OpenCPN.cbp 文件,这是 codeblocks 的工程文件。

  3. 打开 codeblocks ,选择 File - open 找到刚才的 build 文件夹,选择 OpenCPN.cbp

  1. 如果系统未安装该 IDE,可以直接从源安装:

    sudo apt-get install codeblocks
    
  2. 此时右侧项目是 all 的状态,点击菜单栏上的 build 黄色小齿轮进行编译,这里提示没有错误,准备运行 opencpn

    Process terminated with status 0 (0 minute(s), 1 second(s))
    0 error(s), 0 warning(s) (0 minute(s), 1 second(s))
    
  3. 在右侧的下拉菜单中将 all 改选为 opencpn ,继续点击绿色三角 run 运行,可能弹出是否用 safe mode 运行,我选择了 yes

  1. 出现 opencpn 界面,编译运行无问题。

四、利用 IDE 调试

  1. 利用 IDE 进行 debug ,我们选择航线相关的源文件 Route.cpp ,随便将断点加在某行,我这里加在了 92 行构造函数的末尾,想看一看新建航线时断点能否进入。此时,加好断点,点击菜单栏中的红色三角 Debug 进行调试运行。

  1. 出现 opencpn 海图界面后,随便找个地方,右键选择 New Route… 新建航线, 成功进入断点。

  1. 实际上,官方在这里补充了一段说明。大致的意思是如果要在不安装的情况下直接在 IDE 中运行 opencpn ,需要进行一些拷贝操作,我将其简单分段如下,前三个操作只是复制,非常好理解,最后一个暂时没找到正确的位置设置,但是好像不影响调试。

    In order to be able to run OpenCPN from inside the IDE without having it installed, you must:

    1. copy the following folders from the data subfolder of the source tree to your build folder: gshhs, s57data, tcdata.
    2. You also must create a subfolder uidata in the build folder and copy the following files from src/bitmaps into it: styles.xml, toolicons_journeyman_flat.png, toolicons_journeyman.png, toolicons_traditional.png, plus.svg.
    3. You should also copy authors.html and license.html from /data to your ‘build’ folder.
    4. Then to ensure that your ‘build’ folder is used as the ‘source’ for the run/debug session you need to ensure that OpenCPN is started with ‘-p’ as a parameter. This sets OpenCPN into ‘portable’ mode and therefore looks in the location the ‘opencpn’ executable is run from, i.e. your ‘build’ directory.

    我把上面几句话写成了三句命令,首先 cd 进入你的 opencpn 源码路径下,执行如下命令即可。这些操作不做也可以进行编译调试,为了避免后面出现问题,最好还是按照官方指导来进行。

    cp -r ./data/s57data ./data/gshhs ./data/tcdata  ./build/
    mkdir ./build/uidata && cp ./src/bitmaps/styles.xml ./src/bitmaps/toolicons_journeyman_flat.png ./src/bitmaps/toolicons_journeyman.png ./src/bitmaps/toolicons_traditional.png ./src/bitmaps/plus.svg ./build/uidata
    cp ./data/authors.html ./data/license.html ./build/
    

四、测试界面开发工具

  1. 官方推荐使用 wxFormBuilder-github 来开发 GUI

  2. 编译这个东西,按照它作者提供的编译指南,先安装依赖,然后克隆源码,最后编译运行。

    sudo apt install libwxgtk3.0-gtk3-dev libwxgtk-media3.0-gtk3-dev meson
    git clone --recursive --depth=1 https://github.com/wxFormBuilder/wxFormBuilder
    cd wxFormBuilder
    meson _build --prefix $PWD/_install --buildtype=release
    ninja -C _build install
    ./_install/bin/wxformbuilder
    
  3. 运行到 ninja 编译,未通过,报错如下:

    /usr/bin/ld: cannot find -lwx_gtk2u_media-3.0
    /usr/bin/ld: cannot find -lwx_gtk2u_media-3.0
    collect2: error: ld returned 1 exit status
    [61/67] Compiling C++ object 'additional@sha/plugins_additional_additional.cpp.o'.
    ninja: build stopped: subcommand failed.
    
  4. 缺少库,安装对应的库:

    sudo apt-get install libwxgtk-media3.0-dev
    
  5. 最后执行编译好的可执行文件

    ./_install/bin/wxformbuilder
    

  1. 报错,提示,经过查找 issues 发现有人提到了这个问题 #524,解决方案如下,注意替换路径,我是安装在我自建的Software文件夹:

    cd ~/Software/wxFormBuilder/_install/lib/x86_64-linux-gnu
    cp -r wxformbuilder ../
    cd ~/Software/wxFormBuilder/_install/bin
    ./wxformbuilder
    

  1. 成功解决,完事了,wxFormBuilder 的具体使用方法请自行探索。

OpenCPN + Ubuntu 18.04 源码编译 + Codeblocks 调试 + wxFormBuilder 安装相关推荐

  1. opencv4.0在linux下编译,Ubuntu 18.04源码编译安装OpenCV 4.0步骤

    Ubuntu 18.04下标准常规安装方法安装的OpenCV版本比较低,想尝鲜使用4.0版本,只好源码安装. 安装环境 OS:Ubuntu 18.04 64 bit 显卡:NVidia GTX 108 ...

  2. Ubuntu 16.04源码编译安装Apache 2.4.25教程

    这篇文章主要为大家详细介绍了Ubuntu 16.04源码编译安装Apache 2.4.25,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文为大家介绍了Ubuntu 16.04源码编译安装Apa ...

  3. Anaconda Python3.6 OpenCV4.1.0 Ubuntu 16.04源码编译

    Anaconda Python3.6 OpenCV4.1.0 Ubuntu 16.04源码编译 转载于:https://blog.csdn.net/phdsky/article/details/782 ...

  4. Ubuntu 16.04 源码编译安装 uhd gnuradio

    Ubuntu 16.04 源码编译安装 uhd & gnuradio 环境介绍 UHD安装 1 安装依赖 2 编译 3 测试安装结果 4 配置 USB gnuradio安装 1 安装依赖 2 ...

  5. opencore0.6.3_Ubuntu 18.04 源码编译安装 PHP 7.3

    记录在Ubuntu 18.04下源码编译安装 PHP 7.3的过程步骤. 0.下载PHP源代码 首先需要从PHP官网下载PHP7.3.1的源代码,保存为php-7.3.1.tar.xz. http:/ ...

  6. Ubuntu 20.04 源码编译Paddle2.2.2

    做研发,总是要不停装新机器和新系统.今天尝试了一下编译Paddle2.2.2. 先说结果: (1)Ubuntu20.04 + Python3.8.10 + gcc-8 (2)cuda和cudnn的版本 ...

  7. Ubuntu 16.04 源码编译安装GPU tensorflow(二)

    如前一篇在1.4.0版本的Tensorflow上安裝Tensorflow Object Detection API,在验证测试时出現serialized_options=None问题.需安装高版本Te ...

  8. 【已解决】ubuntu 16.04 源码编译opencv4.5.1 报错 “../../lib/libopencv_imgcodecs.so.4.5.0: undefined reference t”

    源码编译opencv可参考教程:在ubuntu下安装opencv4.1.0详细步骤https://blog.csdn.net/weixin_44003563/article/details/90404 ...

  9. ubuntu 编译php5.6,Ubuntu 16.04 源码编译 PHP5.6

    源码编译PHP5.6 //更新依赖 sudo apt-get update sudo apt-get install build-essential //安装依赖 sudo apt-get insta ...

最新文章

  1. java实验3 2020.4.6
  2. mac下安装前端模板引擎Jinja2
  3. 两点(51Nod-1416)
  4. 计算机专业术语的通俗解释,计算机专业术语解释
  5. Python3.2官方文件翻译-工具列表和十进制浮点计算
  6. 年轻人,AI不想给你加薪升职
  7. javplayer 使用教程_工程测绘CASS教程+视频讲解+插件大合集,小白3天学会绘图
  8. 数据库存储过程讲解与实例
  9. ADAMS2016启动证书错误解决
  10. KinectV2 qt opencv 实现平面测量
  11. 【随笔记】Deepin20 Linux 下安装编译NGINX
  12. Web前端——JavaScript 的基础总结
  13. kubernetes节点减容与扩容
  14. 文献【综述】Hallmarks of Cancer: The Next Generation 肿瘤的新十大特征
  15. 18.Oracle10g服务器管理恢复--RMAN备用数据库(练习31.32)
  16. vue 页面长时间静止不动,触发自动退出事件
  17. openai的gym baseline spiningup 深度强化学习环境安装 手撸gym环境demo
  18. 计算机企业人员的职称有哪些,企业IT人员评职称需要什么资质
  19. java继承执行子类输出顺序_JAVA继承顺序
  20. meshlab比较模型误差

热门文章

  1. 婚纱摄影APP软件开发详细
  2. 获取淘宝购买到的商品订单物流API,买家订单物流API接口,淘宝买家订单API接口
  3. STM32驱动2位数码管
  4. 简单解释 P2P 技术之 UDP 打洞
  5. android平板车载,酷狗发布Android Pad版 抢滩车载及平板应用市场
  6. 学习笔记整理_Linux基本命令
  7. 计算机二级小蒋是一位中学老师,计算机二级考试MSOffice考试题库excle有答案
  8. 【GD32】GD32设置TIMER0输出PWM
  9. 人机混合智能的哲学思考
  10. kill word fore out