当前位置: 首页 > 工具软件 > libgd > 使用案例 >

编译libgd

燕超
2023-12-01


最近由于项目需要jpg进行压缩,查了相关资料,发现php的代码中使用了压缩图片使用libgd库,于是下载进行编译,因为历史问题,需要编译成32位的库,这个可就把我搞死了,他的源码中有cmake和automake方式,直接编译成的属于64位平台。于是我在cmake命令上面直接加上了如下命令:

SET(CMAKE_CXX_FLAGS "-g -m32 -w -std=gnu++98"

编译的时候是通过了,但是在链接的时候出现了wrong format这种错误,百度之后,猜想应该是链接为64位,但是obj为32位。这里我就不是很理解,因为我以前的CCMakeList文件使用的就是这样(默认链接32位),可能没有还有些地方没有设置好,经过一段时间折腾,还是没有弄好。于是选择configure脚本,执行时加入参数:

 /configure CXXFLAGS= "-m32" LDFLAGS="-m32"

编译成功。file命令查看,是32位libgdb。写好测试程序,发现无法链接gdImageCreateFromJpeg(),于是nm查看libgd.so导出函数,没有导出gdImageCreateFromJpeg(),难道没有编译进去?果然,如果导出的函数的话,需要链接libjpeg,命令如下:

./configure --prefix=/usr/local/libgd --with-png=/usr/local/libpng --with-jpeg=/usr/local/libjpeg CXXFLAGS= "-m32" LDFLAGS="-m32"

果断下载重新编译。运行成功

 类似资料: