在树莓派用gcc7.5编译串口代码过程

树莓派:pi 4 B

系统:树莓派官网的ubuntu 22.04版

1 修改软件源为国内。注意树莓派是arm架构,需要用ports源,最开始就是在这栽跟头了。

sudo vim /etc/apt/sources.list
:%s/ports.ubuntu.com/mirrors.aliyun.com/g
:x
sudo apt update

详细请参考:Linux:Ubuntu 国内源介绍_Brendon_Tan的博客-CSDN博客

2 下载安装gcc7.5版本

sudo apt install gcc-7 g++-7

# 查看安装版本
gcc -V

3 安装make

sudo apt install make

4 因为我的c++代码想用cmake自动链接静态库编译,所以有这一步。不需要可不安装。

 wget https://cmake.org/files/v3.5/cmake-3.5.2.tar.gz
 tar -xzvf cmake-3.5.tar.gz
 cd cmake-3.5./
 ./bootstrap
 make .
 sudo make install

5 安装WiringPi 64位。

用命令sudo apt install wiringpi 直接安装可以成功安装,但是架构不匹配不能使用gpio命令。

wget https://gitee.com/LJYSCIENTIST/raspberry-pi-software-storage/raw/master/wiringpi-2.60-1_arm64.deb # 文件包将下载到当前目录,安装完后可以删除 
sudo apt-get install ./wiringpi-2.60-1_arm64.deb # 安装

gpio -v # 查看是否安装成功,查看版本
gpio readall  # 查看针脚

参考自:树莓派WiringPi64位支持(树莓派4B) - 哔哩哔哩

6 在CMakeLists.txt链接wiringpi库,参考以下c++添加库操作的方法3

7 测试点亮小灯和按钮

详情请参考:

TinkerBoard开发板使用C++检测独立按键是否被按下_c++ pullupdncontrol_hehui0921的博客-CSDN博客

更多功能函数参考:

树莓派wiringPi库详解_大红烧肉的博客-CSDN博客


cmake 添加外部静态/动态 库操作(以jsoncpp为例):

1 从源码开始,下载源码

1.1  直接导入源码

        1)将下载后的zip解压后,在要添加该库的项目下创建目录如jsoncpp。

        2)将include/json下的所有头文件复制到jsoncpp下;src/lib_json下的所有文件复制到jsoncpp下(特别注意cpp文件,也可以复制到main.cpp同级下)。

        3)在已有的CMakeLists.txt文件里加入以下内容

# 把对应的cpp文件添加到此处,注意cpp的层级关系
add_executable(Test native-lib.cpp json_reader.cpp json_value.cpp json_writer.cpp) 
 
add_library( # Sets the name of the library. 
    myJNI 
     
    # Sets the library as a shared library. 
    SHARED 
     
    # Provides a relative path to your source file(s). 
    # 复制的哪些头文件就写哪些
    jsoncpp/json_tool.h 
    jsoncpp/json_reader.cpp 
    jsoncpp/json_valueiterator.inl 
    jsoncpp/json_value.cpp 
    jsoncpp/json_writer.cpp 
    jsoncpp/assertions.h 
    jsoncpp/autolink.h 
    jsoncpp/config.h 
    jsoncpp/features.h 
    jsoncpp/forwards.h 
    jsoncpp/json.h 
    jsoncpp/reader.h 
    jsoncpp/value.h 
    jsoncpp/version.h 
    jsoncpp/writer.h 
    )

1.2  将源码编译为静态/动态链接库导入

        1)将下载后的zip解压后,在源码项目下根据已有的CMakeLists.txt 编译生成.a 或.so文件。(注意一定要在本机编译,不能直接用其他机器编译好的,因为路径不一样)

        2)在已有的CMakeLists.txt文件里加入以下内容

add_library( json_vc71_libmtd STATIC IMPORTED )  # json_vc71_libmtd 为库名
set_target_properties( json_vc71_libmtd PROPERTIES IMPORTED_LOCATION ${PROJECT_SOURCE_DIR}/lib/json_vc71_libmtd.lib )  # 静态库的路径
target_link_libraries(CMake-lida PUBLIC json_vc71_libmtd)  # CMake-lida项目名称

1.3 ubuntu apt下载已有的安装包

        1)用命令安装对应的库文件(安装好后,头文件一般在/usr/include/jsoncpp/json/,静/动态库一般在/usr/lib/或/usr/lib/x84_64-linux-gnu下)

sudo apt install libjsoncpp-dev

        2)在已有的CMakeLists.txt文件里加入以下内容

set(lib_DIR /usr/lib/x84_64-linux-gnu)
link_directories(${lib_DIR})
target_link_libraries(Test libjsoncpp.so)

最后两种方式理论上应该是差不多的功能,但是我对cmake语法不是很熟,就先这样写吧……

用以下命令测试是否成功,通常导入后都需要修改头文件中互相引用时的路径,问题不大。

cmake .
make
./Test

文章若有遗漏或不足,还请指正。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值