You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu下无IDE开发嵌入式机器视觉C++项目:简化编译与库链接

我太懂这种烦躁了——每次编译都要敲一堆-I、-L、-l参数,明明Python装个包就能直接用,C却要手动折腾链接。针对你嵌入式系统下的C开发需求,这里有几个实用的方案,帮你实现像Python那样简洁的开发测试流程:

方案1:用Makefile自动化编译(入门首选)

Makefile是最轻量化的编译自动化工具,写一次就能重复用,完全替代冗长的bash命令。针对你的sign.cpp,可以写一个这样的Makefile:

# 定义编译器和基础编译参数
CXX = g++
CXXFLAGS = -std=c++11 -Wall  # -Wall开启警告,方便调试
# 头文件路径和库路径(如果是非系统默认路径)
INCLUDES = -I/usr/local/include
LDFLAGS = -L/usr/local/lib
# 需要链接的库
LIBS = -lcrypto -ljwt

# 最终生成的可执行文件名称
TARGET = sign

# 默认执行目标:编译生成可执行文件
all: $(TARGET)

# 编译规则:从.cpp文件生成可执行文件
$(TARGET): sign.cpp
	$(CXX) $(CXXFLAGS) $(INCLUDES) $(LDFLAGS) $^ -o $@ $(LIBS)

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

写完后,你只要在终端敲make就能自动编译,想清理编译产物就敲make clean,完全不用再输那串长命令。

方案2:用CMake管理复杂项目(适合嵌入式扩展)

如果你的项目后续会增加更多文件或依赖,CMake比Makefile更易维护,还能轻松支持嵌入式交叉编译。写一个CMakeLists.txt:

cmake_minimum_required(VERSION 3.10)
project(SignTool)

# 强制使用C++11标准
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# 添加要编译的可执行文件
add_executable(sign sign.cpp)

# 指定头文件搜索路径
target_include_directories(sign PRIVATE /usr/local/include)

# 链接需要的库
target_link_libraries(sign PRIVATE crypto jwt)

使用步骤:

  1. 创建编译目录(避免污染源码):mkdir build && cd build
  2. 生成编译文件:cmake ..
  3. 编译:make

之后每次修改代码,只要回到build目录敲make就行。如果是嵌入式交叉编译,只要在cmake命令前指定交叉工具链,比如:

cmake -DCMAKE_CXX_COMPILER=arm-linux-gnueabihf-g++ ..

灵活性拉满。

方案3:用pkg-config简化库链接(少写硬编码路径)

很多第三方库(比如你用到的crypto、jwt)支持pkg-config工具,它能自动识别库的头文件路径和链接参数,帮你省去手动写-I和-L的麻烦。

修改下Makefile,用pkg-config替代硬编码路径:

CXX = g++
CXXFLAGS = -std=c++11 -Wall $(shell pkg-config --cflags libcrypto libjwt)
LDFLAGS = $(shell pkg-config --libs libcrypto libjwt)
TARGET = sign

all: $(TARGET)

$(TARGET): sign.cpp
	$(CXX) $(CXXFLAGS) $(LDFLAGS) $^ -o $@

clean:
	rm -f $(TARGET)

这样不管库装在哪个路径,pkg-config都会自动帮你找到,避免路径写错的问题。

额外优化:配置环境变量一劳永逸

如果你的库都放在/usr/local这类非系统默认路径(很多第三方库会装在这里),可以把这些路径加到环境变量里,以后编译时系统会自动搜索:

编辑~/.bashrc文件,添加:

export C_INCLUDE_PATH=/usr/local/include:$C_INCLUDE_PATH
export LIBRARY_PATH=/usr/local/lib:$LIBRARY_PATH
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

然后运行source ~/.bashrc生效。这样你甚至可以在Makefile/CMake里去掉-I和-L的配置,更简洁。

一键测试小技巧

想实现像Python那样改完代码就一键运行?写个简单的bash脚本run.sh:

#!/bin/bash
make && ./sign

给脚本加执行权限:chmod +x run.sh,之后每次改完代码,只要敲./run.sh,就能自动编译并运行程序,测试起来特别顺手。如果用CMake的话,脚本可以改成:

#!/bin/bash
cd build && make && cd .. && ./sign

内容的提问来源于stack exchange,提问作者RSlink Engineer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 16:12:39