我正在尝试编译一个同时使用 libjpeg 和 libpng 的项目。我知道 libpng 需要 zlib,所以我独立编译了所有三个并将它们(libjpeg.a、libpng.a 和 libz.a)放在一个名为linrel32
. 然后我执行的是:
g++ -Llinrel32/ program.cpp otherfile.cpp -o linrel32/executable -Izlib/ -Ilpng140/ -Ijpeg/ -lpthread -lX11 -O2 -DLINUX -s -lz -lpng -ljpeg
所以我包括了这三个库。尽管如此,链接器仍然抱怨:
linrel32//libpng.a(png.o): In function `png_calculate_crc':
png.c:(.text+0x97d): undefined reference to `crc32'
linrel32//libpng.a(png.o): In function `png_reset_crc':
png.c:(.text+0x9be): undefined reference to `crc32'
linrel32//libpng.a(png.o): In function `png_reset_zstream':
png.c:(.text+0x537): undefined reference to `inflateReset'
linrel32//libpng.a(pngread.o): In function `png_read_destroy':
pngread.c:(.text+0x6f4): undefined reference to `inflateEnd'
linrel32//libpng.a(pngread.o): In function `png_read_row':
pngread.c:(.text+0x1267): undefined reference to `inflate'
linrel32//libpng.a(pngread.o): In function `png_create_read_struct_2':
(......你明白了:D)
collect2: ld returned 1 exit status
我知道缺少的函数来自 zlib,我正在那里添加 zlib。打开 libz.a,它似乎有一个很好的结构。重新编译它,一切看起来都很好。但它不是...
我不知道,可能问题是小问题,我需要的是睡一会儿。但是,如果你能帮我弄清楚这件事......