如何在虚拟机中linux系统用gcc编译并运行第一个C++程序

本文详细介绍了如何在Linux环境下使用gcc编译器从零开始创建、编译并运行一个简单的C++程序。包括安装gcc、创建项目文件夹、编写源代码、编译及运行程序的全过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文:https://blog.youkuaiyun.com/lily_prince/article/details/64906372 

首先打开Terminal,一般系统都已安装了gcc,如果未安装就在命令行输入#apt-get install gcc命令,接着输入Y,系统就会自己系统下载gcc哦

输入命令 mkdir my_c++ 在根目录或者其他目录创建一个名叫my_c++的文件夹用来存放程序文件,然后cd my_c++进入该目录
输入命令touch hello.cpp 创建名叫hello的cpp文件
输入命令vim hello.cpp,在vim界面输入i,开始编写程序,程序编写好后按Esc键,输入:wq 完成编写并保存该文件(用了string库中的size()函数是为了测试下虚拟机里可以引用C++中的众多库)

输入 g++ -o hello hello.cpp 对hello.cpp文件进行编译,并生成了一个hello的可运行文件
输入 ./hello 运行hello程序
运行效果如下:

--------------------- 


作者:lily_prince 
来源:优快云 
原文:https://blog.youkuaiyun.com/lily_prince/article/details/64906372 
 

<think>好的,用户想搭建RK3588的QT和OpenCV交叉编译环境,开发一个QT C++ OpenCV程序,最终移植到Buildroot系统。我需要结合之前提供的引用内容来给出步骤和建议。 首先,引用2提到了RK3588交叉编译OpenCV时的工具链设置,用户需要配置CMAKE_C_COMPILER和CMAKE_CXX_COMPILER,指向正确的交叉编译器路径。这可能涉及到在CMake配置时指定这些变量,同时可能需要注意OpenCV的依赖项是否正确编译。引用5中提到在编译OpenCV时可能需要修改flags.make文件,添加-O3 -fPIC选项,特别是在3rdparty的库中,比如zlib。这可能是为了解决编译时的错误,确保在64位架构上正确编译。 接下来,关于QT的交叉编译,引用3提到在Buildroot中增加QT程序,需要安装QT开发环境,参考Rockchip的官方文档。用户可能需要先在主机上安装QT,配置交叉编译工具链。可能需要使用Buildroot SDK中的工具链来编译QT程序,确保生成的二进制文件适用于RK3588的目标架构。 然后,将OpenCV集成到QT项目中,需要确保QT的交叉编译环境能够找到交叉编译后的OpenCV库和头文件。可能需要设置环境变量如PKG_CONFIG_PATH,或者在QT的.pro文件中指定正确的库路径和链接选项。同时,需要注意OpenCV和QT的版本兼容性,避免接口不一致的问题。 最后,移植到Buildroot系统中,引用1和引用3提到Buildroot中的文件系统结构,需要将编译好的QT和OpenCV程序以及所需的库文件部署到Buildroot的输出目录中,可能需要修改Buildroot的配置文件,添加自定义的包或覆盖现有的包配置,确保生成的根文件系统包含所有必要的依赖项。 另外,用户可能需要处理动态库的路径问题,确保程序在目标板上运行时能正确找到OpenCV和QT的库文件,可以通过设置LD_LIBRARY_PATH或修改/etc/ld.so.conf来实现。此外,交叉编译过程中常见的路径错误、权限问题以及依赖库缺失都需要逐一检查,比如使用ldd检查可执行文件的依赖是否满足。 总结步骤应该是:配置交叉编译工具链;交叉编译OpenCV;交叉编译QT;开发QT+OpenCV程序;整合到Buildroot系统中。过程中需要参考提供的引用中的具体配置方法,注意编译选项和环境变量的正确设置。</think>根据需求,以下是RK3588搭建Qt+OpenCV交叉编译环境及移植到Buildroot系统的详细步骤: ### 一、环境准备 1. **工具链配置** 确保使用Buildroot SDK提供的交叉工具链,参考引用[2]设置路径: ```cmake set(CMAKE_C_COMPILER /home/forlinx/aarch64-buildroot-linux-gnu_sdk-buildroot/bin/aarch64-buildroot-linux-gnu-gcc) set(CMAKE_CXX_COMPILER /home/forlinx/aarch64-buildroot-linux-gnu_sdk-buildroot/bin/aarch64-buildroot-linux-gnu-g++) ``` 2. **安装依赖库** 主机需安装`cmake`、`ninja-build`、`pkg-config`等工具,目标架构依赖库通过Buildroot配置生成 --- ### 二、交叉编译OpenCV 1. **源码配置** ```bash mkdir build && cd build cmake -DCMAKE_TOOLCHAIN_FILE=../platforms/linux/aarch64-gnu.toolchain.cmake \ -DWITH_QT=ON \ -DBUILD_opencv_world=ON \ -DCMAKE_INSTALL_PREFIX=/opt/opencv_arm64 .. ``` 若编译报错,参考引用[5]修改`flags.make`添加`-O3 -fPIC` 2. **编译与安装** ```bash make -j$(nproc) && make install ``` --- ### 三、交叉编译Qt 1. **配置Qt for Embedded Linux** 通过Buildroot配置Qt模块: ```bash make menuconfig # 选择Target packages -> Graphic libraries -> Qt5 ``` 参考引用[3]配置Qt版本和组件(如gui、widgets、opengl) 2. **生成Qt工具链** 编译后SDK位于`output/host/usr/arm-nuvoton-linux-uclibcgnueabi/sysroot`(参考引用[1]) --- ### 四、开发Qt+OpenCV程序 1. **项目配置(.pro文件)** ```qmake INCLUDEPATH += /opt/opencv_arm64/include LIBS += -L/opt/opencv_arm64/lib -lopencv_world ``` 2. **交叉编译程序** ```bash export PATH=/path/to/qt-cross-compiler/bin:$PATH qmake && make ``` --- ### 五、移植到Buildroot系统 1. **添加自定义包** 在`package/`目录下创建程序包,配置`Config.in`和`.mk`文件,参考引用[3]中QT程序集成方法 2. **文件系统集成** 将编译好的二进制文件、Qt插件和OpenCV库(如`libopencv_world.so`)复制到Buildroot的`target/`目录 3. **生成固件** ```bash make # 生成包含所有组件的rootfs镜像 ``` --- ### 六、验证与调试 1. **目标板部署** 通过TF卡或网络将镜像烧录到RK3588开发板 2. **环境变量设置** 在目标板`/etc/profile`中添加: ```bash export LD_LIBRARY_PATH=/usr/lib/opencv:/usr/lib/qt5:$LD_LIBRARY_PATH ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值