ubuntu cximage如何恢复
小樊
33
2025-12-12 18:04:06
Ubuntu 下 CxImage 恢复指南
一、先判断你的“恢复”目标
- 修复安装或编译错误,让 CxImage 能正常编译、链接与运行。
- 修复或重建动态库的符号链接(如 libcximage.so 指向正确的 .so.x.y)。
- 彻底重装 CxImage(清理旧构建产物与安装文件,再从源码构建)。
- 仅运行时报库找不到,快速恢复库搜索路径。
二、快速恢复步骤
- 安装或补齐依赖
- 执行:sudo apt update
- 执行:sudo apt install build-essential libpng-dev libjpeg-dev libtiff-dev libgif-dev zlib1g-dev
- 若你的构建用到 Jasper(例如处理 .jp2),再执行:sudo apt install libjasper-dev
- 清理并重新配置构建环境
- 进入源码根目录后依次执行:
- make clean
- aclocal
- autoconf -i -v -f
- find ./ -name Makefile -exec rm -f {} ;
- ./configure
- 修复 64 位指针精度错误(常见于 tif_xfile.cpp)
- 打开 cximage/CxImage/tif_xfile.cpp,定位到 _TIFFOpenEx 函数,将
- return (_TIFFFdOpen((int)stream, “TIFF IMAGE”, mode));
- 改为:return (_TIFFFdOpen((long)stream, “TIFF IMAGE”, mode));
- 重新编译与安装
- 执行:make -j$(nproc)
- 执行:sudo make install
- 若使用静态库并出现位置无关代码错误
- 重新配置时加入:CPPFLAGS=“-fPIC” ./configure,然后 make clean && make
- 验证安装结果
- 检查库:ls /usr/local/lib | grep libCxImage
- 检查头文件:ls /usr/local/include | grep cximage.h
- 运行时库路径(若报找不到共享库)
- 临时:export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
- 永久:echo ‘export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH’ >> ~/.bashrc && source ~/.bashrc
三、常见故障与对应修复
- 编译时报 “aclocal-1.4 not found / automake 版本冲突”
- 执行:aclocal && autoconf -i -v -f,删除旧 Makefile 后重新 ./configure
- 报 “jasper/jas_config.h: No such file or directory”
- 重新配置并指定头文件路径:./configure --with-extra-includes=/path/to/jasper/include
- 链接时报 “undefined reference to …” 或 “relocation R_X86_64_32S …”
- 确保链接所有依赖库,例如:g++ your_app.cpp -o your_app -L/usr/local/lib -lcximage -lj2k -ljpeg -ljbig -ltiff -lpng -ljasper -lstdc++
- 若是静态库,编译 CxImage 时加上 -fPIC
- 运行时报 “error while loading shared libraries: libcximage.so: cannot open shared object file”
- 设置 LD_LIBRARY_PATH 指向库目录(如 /usr/local/lib),或执行 sudo ldconfig(若库已安装到系统目录)
- 头文件找不到
- 编译时加上头文件路径:g++ … -I/usr/local/include -L/usr/local/lib -lcximage
- 64 位系统编译 TIFF 相关文件报 “cast from ‘CxFile*’ to ‘int’ loses precision”
- 将相关强制转换改为 (long)(见上文代码片段)
四、彻底重装与版本兼容建议
- 彻底清理后重装
- 卸载旧文件:sudo make uninstall(若 Makefile 提供),或手动删除 /usr/local/lib/libCxImage.*、/usr/local/include/cximage 等
- 回到源码目录:make distclean(如有),然后按“快速恢复步骤”重来
- 获取与构建最新稳定代码
- 执行:git clone https://github.com/cximage/cximage.git
- 进入目录:cd cximage && git checkout main && git pull origin main
- 按“快速恢复步骤”配置、编译与安装
- 版本与兼容性
- 优先使用 main/master 稳定分支;不同 Ubuntu 版本的 libpng/libjpeg/libtiff 版本差异可能导致 API/链接差异,必要时回退 CxImage 提交或调整依赖版本