在 Debian 上编译 CxImage(一个比较老的 C++ 图像处理库)时,有几个常见坑和注意点。下面按「环境准备 → 编译方式 → 常见问题」来说明。
sudo apt update
sudo apt install build-essential
CxImage 本身依赖不多,但某些模块会用到:
sudo apt install libjpeg-dev libpng-dev libtiff-dev
如果你要用 CxImage 的完整版(含 jpeg / png / tiff / zlib),这些很重要。
CxImage 源码里通常有:
Makefile
编译步骤:
make
⚠️ 注意:
例如只编译核心库:
g++ -c *.cpp -I.
ar rcs libcximage.a *.o
或者编译成动态库:
g++ -fPIC -shared -o libcximage.so *.cpp -I.
CxImage 代码大量使用:
throw()
这是 C++11 已弃用语法,在 gcc 9+ 可能警告甚至报错。
✅ 建议加:
-std=c++98
或
-std=c++11
常见错误:
fatal error: jinclude.h: No such file or directory
原因:
jpeg/ 目录加进 include 路径✅ 解决:
-Ijpeg -Ipng -Itiff -Izlib
register 关键字报错在 Debian 新版本 gcc 中:
register int i;
会直接编译失败。
✅ 解决:
register-Wno-register
CxImage 早期假设 int == 指针大小
✅ 建议:
-m32 编译(不推荐)强烈建议:
CxImage 已多年不维护,在 Debian 新系统上属于“考古级项目”。
#include "ximage.h"
int main() {
CxImage img;
img.Load("test.jpg", CXIMAGE_FORMAT_JPG);
img.Save("out.png", CXIMAGE_FORMAT_PNG);
}
编译:
g++ main.cpp libcximage.a -ljpeg -lpng -lz -o test
如果你愿意,可以告诉我:
我可以直接给你一份 能直接编译的 Makefile。