首页 > 其他分享 >关于编译的一些debug记录

关于编译的一些debug记录

时间:2024-05-14 13:57:42浏览次数:27  
标签:baseModels 记录 ecBaseModel jsoncpp 编译 cpp debug ec

1. 背景:

现在想将嵌入式开发板部署成边缘控制器,需要在开发板上部署一个服务。我们已经写了一个c语言的应用,现在需要将其编译成适配64位arm架构的2进制可执行文件

2. bug:

在编译的时,输入命令:

g++ -fdiagnostics-color=always -g unifiedAccessServer.cpp baseModels/control/ec/ecBaseModel.cpp baseModels/control/ec/ecBaseModel.h baseModels/defineDeviceFolder.h baseModels/defineDeviceFolder.cpp -ljsoncpp -lopen62541 -L /usr/local/libs -ljsoncpp -L.-lssh -o unifiedAccessServer

会出现bug: 

In file included from unifiedAccessServer.cpp:6: baseModels/control/ec/ecBaseModel.h:2:10: fatal error: json.h: No such file or directory 2

| #include <json.h> | ^~~~~~~~ compilation terminated.

这应该是jsoncpp库没有被链接导致的错误,但反复检查,这个库已经安装了,也用-ljsoncpp链接了,也试过指定库的位置,但还是会报错,可能的问题:
因为这个报错就是无法找到jsoncpp这个标准库文件导致的,即利用-L /usr/local/libs指定的位置实际上没有jsoncpp库,即利用pkg-config命令找的位置可能并非最终库文件所在位置。

3. debug:

将有关的源文件下载后,编译直接保存在工程目录下,具体可参考:https://blog.csdn.net/zywhehe/article/details/108106315

使用其中第一大点方法“一、JsonCpp源代码——超级简单,推荐!!!”

https://github.com/open-source-parsers/jsoncpp/wiki/Amalgamated-(Possibly-outdated)

(1)下载.ZIP包,解压
(2)python执行amalgamate.py
(3)将dist目录下的两个.h文件和一个.cpp文件复制到项目代码文件目录下
(3)在项目中添加现有项,加入上述文件
修改jsoncpp.cpp中的头文件为对应引用:#include "json.h"

针对我的项目,在利用python编译出jsoncpp库的有关.cpp,.h文件后,进行如下修改:

(1)将源码加入源代码目录

其中lib文件夹为(都是python执行amalgamate.py生成的文件)

(2)然后将引用json.cpp的地方全改为#include "json.h",如(注意,这个ecBaseModel.h文件是在baseModels文件夹目录中的,非根目录中的;这样也是可以的)

(3)在当前根目录,即EC-after文件夹中输入编译命令:

g++ -fdiagnostics-color=always -g -Ilib unifiedAccessServer.cpp baseModels/control/ec/ecBaseModel.cpp baseModels/control/ec/ecBaseModel.h baseModels/defineDeviceFolder.h baseModels/defineDeviceFolder.cpp -ljsoncpp -lopen62541 -lssh -o unifiedAccessServer

 其中-I(大写的i)l(小写的L)ib,指定了库文件的位置,即可编译成功!

 但还是无法适配于arm架构,仍需要调整

 

标签:baseModels,记录,ecBaseModel,jsoncpp,编译,cpp,debug,ec
From: https://www.cnblogs.com/Daemon17/p/18191172

相关文章

  • 玩转创想三维 K1 系列主板之二:编译 MCU 固件,恢复裁剪组件
    前言原创文章,转载引用请务必注明链接,水平有限,如有疏漏,欢迎交流指正。文章如有更新请访问DFRobot社区及cnblogs博客园,前者内容较全,后者排版及阅读体验更佳。本文是摸索创想三维K1系列软硬件系统的一些内容分享。最近创想三维的工作人员联系了我,希望接下来能加快网卡直连......
  • 记录一次Springboot Data Jdbc的autoWorkController异常
    Errorcreatingbeanwithname'autoWorkController':Unsatisfieddependencyexpressedthroughfield'jdbcRouteRepository':Errorcreatingbeanwithname'jdbcRouteRepository'definedincom.chint.infrastructure.repository.jdbc......
  • 【编译器001-001】总览
    参考资料BuildingaCompiler国内搬运[中英字幕]C#构建编译器(BuildingaCompiler)代码地址:https://github.com/terrajobst/minsk具体思路这个作者使用的是dotnet,而我对dotnet不怎么感冒,所以我的方式是先使用dotnet跟着抄一遍,然后使用自己喜欢的语言写一......
  • 【编译原理】根据给定文法,用C/C++语言编写Translation Schema,执行程序并给出结果
    任务描述本关任务:根据给定文法,用C/C++语言编写TranslationSchema,执行程序并给出结果相关知识为了完成本关任务,你需要掌握:TranslationSchema相关方法理论C/C++编程语言基础C语言的基本结构知识TranslationSchema在动手设计之前,你应该先做好TranslationSchema的相关......
  • Advanced .Net Debugging 8:线程同步
    一、介绍这是我的《Advanced.NetDebugging》这个系列的第八篇文章。这篇文章的内容是原书的第二部分的【调试实战】的第六章【同步】。我们经常写一些多线程的应用程序,写的多了,有关多线程的问题出现的也就多了,因此,最迫切的任务就是提高解决多线程同步问题的能力。这一节......
  • 奇葩需求记录 各个系统取数据联表展示
    首先,我刚进公司没多长时间,然后介绍一下背景,这边是个工厂,上了很多个系统搞信息化,这边是有自己的研发团队的(C#),还做了一套系统出来搞生产管理。为了实现信息化呢,这边叫了很多个外包团队开发很多个系统,有些系统语言也不一样(java,C#,我甚至看到了jsp,不过也有springcloud),数据库也不一样(我......
  • 记录一次Windows上简单向linux上传文件
    1直接账号密码登录上传---使用winscp(得先安装winscp)``@echooffREM设置WinSCP安装路径setWINSCP_PATH="C:\ProgramFiles(x86)\WinSCP\WinSCP.com"REM设置连接参数setHOSTNAME=192.168.1.112setUSERNAME=rootsetPASSWORD=xxxxxxxxsetREMOTE_PATH=/home/......
  • vue3编译优化之“静态提升”
    前言在上一篇vue3早已具备抛弃虚拟DOM的能力了文章中讲了对于动态节点,vue做的优化是将这些动态节点收集起来,然后当响应式变量修改后进行靶向更新。那么vue对静态节点有没有做什么优化呢?答案是:当然有,对于静态节点会进行“静态提升”。这篇文章我们来看看vue是如何进行静态提升的......
  • centos7 编译gcc
    https://linuxhostsupport.com/blog/how-to-install-gcc-on-centos-7/ HowToInstallGCConCentOS7rial,wewilltakealookat howtoinstallGCConCentOS7.GCCorGNUCompilerCollectionisreleasedbytheFreeSoftwareFoundationandasthenamesugg......
  • 精准记录:使用 Playwright 实现屏幕截图
    前言在软件开发和测试中,屏幕截图是一种常用的工具,用于记录应用程序的状态、错误信息等。Playwright提供了一种简单而强大的方式来实现屏幕截图,帮助开发人员和测试人员轻松捕获和分析应用程序的界面。本文将介绍如何使用Playwright实现屏幕截图。screenshot截图在Playwrig......