当前位置: 首页 > news >正文

随笔1 认识编译命令

1.认识编译命令

1.1 解释gcc编译命令: gcc test1.cpp -o test1 pkg-config --cflags --libs opencv

  1. 命令解析:
  • gcc:GNU C/C++ 编译器,用于编译C/C++代码。

  • test1.cpp:源代码文件。

  • -o test1:指定输出的可执行文件名为test1

  • pkg-config --cflags --libs opencvpkg-config是一个工具,用于查询库的编译和链接参数。

  1. pkg-config的作用:
  • --cflags:获取OpenCV头文件的路径(例如-I/usr/include/opencv)。

  • --libs:获取OpenCV库文件的路径(例如-L/usr/lib -lopencv_core -lopencv_imgproc)。

  1. 工作原理:
  • pkg-config会读取OpenCV的.pc文件(通常位于/usr/lib/pkgconfig目录下),从中提取头文件路径和库文件路径。
  • 编译器根据这些路径找到OpenCV的头文件和库文件,完成编译和链接。

2. 使用Makefile编译

以下是基于变量命名格式的Makefile文件:

在这里插入代码片`# 定义变量
CC = gcc
CFLAGS = `pkg-config --cflags opencv`
LDFLAGS = `pkg-config --libs opencv`
SRC = test1.cpp
OBJ = test1.o
TARGET = test1

# 默认目标
all: $(TARGET)

# 编译规则
$(TARGET): $(OBJ)
	$(CC) $(LDFLAGS) -o $@ $<

$(OBJ): $(SRC)
	$(CC) $(CFLAGS) -c $< -o $@

# 清理生成的文件
clean:
	rm -f $(OBJ) $(TARGET)`

说明

  • CC:指定编译器。
  • CFLAGS:包含头文件路径。
  • LDFLAGS:包含库文件路径。
  • SRC:源文件。
  • OBJ:目标文件。
  • TARGET:最终生成的可执行文件。
  • clean:清理生成的文件。
    使用方法
  1. 将上述内容保存为Makefile。
    在这里插入图片描述

  2. 在终端中运行:

make
  1. 清理文件:
make clean

3. 使用CMake编译

以下是CMakeLists.txt文件的编写方法:

# CMakeLists.txt
cmake_minimum_required(VERSION 3.10)
project(OpenCVTest)

# 设置C++标准
set(CMAKE_CXX_STANDARD 11)

# 查找OpenCV库
find_package(OpenCV REQUIRED)

# 添加源文件
add_executable(${PROJECT_NAME} test1.cpp)

# 链接OpenCV库
target_link_libraries(${PROJECT_NAME} ${OpenCV_LIBS})

使用方法

  1. 将上述内容保存为CMakeLists.txt
    在这里插入图片描述

  2. 创建一个构建目录并进入:

mkdir build
cd build
  1. 生成Makefile并编译:
cmake ..
make
  1. 运行生成的可执行文件:
./OpenCVTest

总结

pkg-config:动态获取OpenCV的头文件和库文件路径。
Makefile:通过变量和规则简化编译流程。
CMake:更高级的构建工具,适合复杂的项目。

相关文章:

  • JavaWeb开发基础知识-XML和JSON
  • Git分支管理
  • 【谷云科技iPaaS观点】如何通过iPaaS平台实现主数据高效同步
  • 华为磁电融合MED vs 铁电/闪存:存储技术新赛道!
  • redis高并发缓存架构与性能优化
  • 青少年编程与数学 02-016 Python数据结构与算法 04课题、栈与队列
  • UE5学习记录part14
  • Windows11 优雅的停止更新、禁止更新
  • 回归预测 | Matlab实现NRBO-Transformer-GRU多变量回归预测
  • 【Linux操作系统——学习笔记三】Linux环境下多级目录构建与管理的命令行实践报告
  • GTA6大型MOD地图
  • 使用docker搭建redis镜像时云服务器无法访问到国外的docker官网时如何解决
  • 瑞萨RA4M2使用心得-GPIO输出
  • [Deep-ML]Reshape Matrix(重塑矩阵)
  • 【Part 1全景视频拍摄与制作基础】第三节|全景视频后期拼接与处理流程
  • C# Winform 入门(12)之制作简单的倒计时
  • zkmall开源商城日志管理:Logback 最佳实践
  • Visual Decoding and Reconstruction via EEG Embeddings with Guided Diffusion
  • 14-产品经理-维护计划
  • 【数据分享】2000—2020年我国250m精度灌溉农田栅格数据(免费获取)
  • 崇州市建设局网站/有没有自动排名的软件
  • 织梦移动网站/百度指数的主要用户是
  • 从网站建设到网站运营/seo网站推广
  • vs2008做网站/西安今天出大事
  • 淘宝的网站建设/seo搜索排名优化公司
  • 做房产网站多少钱/枸橼酸西地那非片