OpenCPN + Ubuntu 18.04 源码编译 + Codeblocks 调试 + wxFormBuilder 安装

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 界面,编译运行无问题。

OpenCPN + Ubuntu 18.04 源码编译 + Codeblocks 调试 + wxFormBuilder 安装_第1张图片

四、利用 IDE 调试

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

OpenCPN + Ubuntu 18.04 源码编译 + Codeblocks 调试 + wxFormBuilder 安装_第2张图片

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

OpenCPN + Ubuntu 18.04 源码编译 + Codeblocks 调试 + wxFormBuilder 安装_第3张图片

  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
    

OpenCPN + Ubuntu 18.04 源码编译 + Codeblocks 调试 + wxFormBuilder 安装_第4张图片

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

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

OpenCPN + Ubuntu 18.04 源码编译 + Codeblocks 调试 + wxFormBuilder 安装_第5张图片

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

你可能感兴趣的:(问题解决记录,OpenCPN,wxFormBuilder,电子海图)