温馨提示×

cximage怎样在Linux编译

小樊
33
2026-06-30 18:25:32
栏目: 智能运维

在 Linux 下编译 CxImage,一般有两种常见方式,取决于你用的是 较老版本(CxImage 6.x/7.x) 还是 新版(CxImage 7.x 以后)。下面我按最常见、最稳妥的方式给你说明。


一、CxImage 简介(先确认)

CxImage 是一个 C++ 图像处理库,支持:

  • BMP、JPEG、PNG、GIF、TIFF、TGA 等
  • 依赖第三方库(libjpeg、libpng、libtiff 等)

⚠️ 注意
CxImage 不是现代 CMake 项目,源码里主要是 Makefile / 工程文件,Linux 下需要手动处理。


二、准备编译环境(必须)

1️⃣ 安装基础编译工具

sudo apt update
sudo apt install -y build-essential

(CentOS / Rocky / Alma)

sudo yum groupinstall "Development Tools"

2️⃣ 安装 CxImage 依赖库

CxImage 需要以下库(非常重要):

sudo apt install -y \
libjpeg-dev \
libpng-dev \
libtiff-dev \
libgif-dev \
zlib1g-dev

(CentOS)

sudo yum install -y libjpeg-devel libpng-devel libtiff-devel giflib-devel zlib-devel

三、获取 CxImage 源码

方式一:官方 SourceForge(经典)

wget https://sourceforge.net/projects/cximage/files/cximage/7.0/cximage700_full.zip
unzip cximage700_full.zip
cd cximage700_full

方式二:GitHub 镜像(推荐)

git clone https://github.com/antirez/cximage.git
cd cximage

四、Linux 下编译 CxImage(核心步骤)

✅ 方法一:使用自带 Makefile(推荐)

CxImage 源码中通常包含:

Makefile

1️⃣ 进入源码目录

cd cximage

2️⃣ 直接编译

make

如果成功,会生成:

libcximage.a

libcximage.so

❌ 常见问题 & 解决方法

问题 1:没有 Makefile(很常见)

有些版本 只有 Windows 工程文件

✅ 解决办法:自己写一个简单 Makefile

示例(最小可用):

CXX = g++
CXXFLAGS = -O2 -fPIC

INCS = -I. -Ijpeg -Ipng -Itiff -Igif
SRCS = $(wildcard *.cpp)
OBJS = $(SRCS:.cpp=.o)

libcximage.a: $(OBJS)
	ar rcs $@ $^

clean:
	rm -f *.o *.a

然后:

make

✅ 方法二:编译为动态库(推荐)

g++ -shared -o libcximage.so *.cpp \
-I. -Ijpeg -Ipng -Itiff -Igif \
-ljpeg -lpng -ltiff -lgif -lz

五、如何使用 CxImage

1️⃣ 示例程序

#include "ximage.h"
#include <iostream>

int main() {
    CxImage img;
    img.Load("test.jpg", CXIMAGE_FORMAT_JPG);
    img.Save("test.png", CXIMAGE_FORMAT_PNG);
    return 0;
}

2️⃣ 编译你的程序

g++ test.cpp -o test \
-I./cximage \
-L./cximage -lcximage \
-ljpeg -lpng -ltiff -lz

六、常见错误速查

错误 原因 解决
jpeglib.h: No such file 没装 libjpeg apt install libjpeg-dev
undefined reference 链接顺序错误 -lcximage 放最后
只支持 Windows 源码太老 换 GitHub 版本
C++11 错误 编译器太老 用 g++ 7+

七、我可以进一步帮你

你可以直接告诉我:

  1. CxImage 版本号
  2. Linux 发行版(Ubuntu / CentOS / 麒麟等)
  3. 想要静态库 / 动态库
  4. ✅ 是否用于 嵌入式 / Qt / OpenCV 项目

我可以直接给你:

  • ✅ 可用的 Makefile
  • ✅ 一键编译脚本
  • ✅ 针对你系统的完整方案

0