在 Linux 下编译 CxImage,一般有两种常见方式,取决于你用的是 较老版本(CxImage 6.x/7.x) 还是 新版(CxImage 7.x 以后)。下面我按最常见、最稳妥的方式给你说明。
CxImage 是一个 C++ 图像处理库,支持:
⚠️ 注意:
CxImage 不是现代 CMake 项目,源码里主要是 Makefile / 工程文件,Linux 下需要手动处理。
sudo apt update
sudo apt install -y build-essential
(CentOS / Rocky / Alma)
sudo yum groupinstall "Development Tools"
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
wget https://sourceforge.net/projects/cximage/files/cximage/7.0/cximage700_full.zip
unzip cximage700_full.zip
cd cximage700_full
git clone https://github.com/antirez/cximage.git
cd cximage
CxImage 源码中通常包含:
Makefile
cd cximage
make
如果成功,会生成:
libcximage.a
或
libcximage.so
有些版本 只有 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
#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;
}
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+ |
你可以直接告诉我:
我可以直接给你: