【感芯科技64线程MC3172开发板免费试用体验】MC3172-CMake改为C++工程

描述

本文来源电子发烧友社区,作者:jf_99374259, 帖子地址:https://bbs.elecfans.com/jishu_2308789_1_1.html



【感芯科技64线程MC3172开发板免费试用体验】MC3172-CMake魔改为C++工程

在 https://bbs.elecfans.com/jishu_2308788_1_1.html 帖子中介绍了 Fedora Linux 搭环境的过程,其中使用的 MC3172-CMake 项目是 C 工程,这次改成 C++ 工程

TL; DR

已经把修改后的 cmake 工程发在 github 上了,直接用就行

https://github.com/nihui/MC3172-CMake

修改cmake工程属性,*.c 改为 *.cpp

按照下图编辑 MC3172-CMake/CMakeLists.txt,然后重命名源代码文件后缀名为 cpp

导出符号 thread_start 为 C 接口

此时直接编译会报错

[ 50%] Linking CXX executable mc3172-cmake.elf
Memory region         Used Size  Region Size  %age Used
CODE_SPACE:          0 GB      65520 B      0.00%
DATA_SPACE:          0 GB      61248 B      0.00%
/home/nihui/osd/MRS_Toolchain_Linux_x64_V1.50/RISC-V Embedded GCC/bin/../lib/gcc/riscv-none-embed/8.2.0/../../../../riscv-none-embed/bin/ld: warning: cannot find entry symbol thread_start; not setting start address
/home/nihui/osd/MRS_Toolchain_Linux_x64_V1.50/RISC-V Embedded GCC/bin/riscv-none-embed-objcopy: error: the input file '/home/nihui/dev/MC3172-CMake/build/mc3172-cmake.elf' has no sections
make[2]: *** [CMakeFiles/mc3172-cmake.elf.dir/build.make:130:mc3172-cmake.elf] 错误 1

原因在于 MC3172-CMake/MC3172/MC3172.lds 中指定 ENTRY 是 thread_start,C++代码编译时因为 mangle 原因,符号表中的名字被篡改,因此需要添加 extern "C" 强制用 C 风格导出该函数

按下图编辑 MC3172-CMake/MC3172/thread_start.cpp

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 相关推荐

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分