Как установить libpng правильно?

Я пытаюсь получить доступ к данным png пикселей в моем коде C. Я нашел эту библиотеку!--3-->libpng. Я скачал последнюю версию с этого сайта, я использую Ubuntu 14.04. Я следовал инструкциям в установочном файле. Все прошло хорошо. И тогда я попытался скомпилировать с gcc этот кусок код. Но я получил вот что:--7-->

/tmp/ccWa9LDO.o: In function `read_png_file':
test.c:(.text+0x13c): undefined reference to `png_sig_cmp'
test.c:(.text+0x16f): undefined reference to `png_create_read_struct'
test.c:(.text+0x1a0): undefined reference to `png_create_info_struct'
test.c:(.text+0x1db): undefined reference to `png_set_longjmp_fn'
test.c:(.text+0x20c): undefined reference to `png_init_io'
test.c:(.text+0x220): undefined reference to `png_set_sig_bytes'
test.c:(.text+0x239): undefined reference to `png_read_info'
test.c:(.text+0x252): undefined reference to `png_get_image_width'
test.c:(.text+0x271): undefined reference to `png_get_image_height'
test.c:(.text+0x290): undefined reference to `png_get_color_type'
test.c:(.text+0x2af): undefined reference to `png_get_bit_depth'
test.c:(.text+0x2c4): undefined reference to `png_set_interlace_handling'
test.c:(.text+0x2e3): undefined reference to `png_read_update_info'
test.c:(.text+0x2fc): undefined reference to `png_set_longjmp_fn'
test.c:(.text+0x36f): undefined reference to `png_get_rowbytes'
test.c:(.text+0x3b2): undefined reference to `png_read_image'
/tmp/ccWa9LDO.o: In function `write_png_file':
test.c:(.text+0x430): undefined reference to `png_create_write_struct'
test.c:(.text+0x461): undefined reference to `png_create_info_struct'
test.c:(.text+0x49c): undefined reference to `png_set_longjmp_fn'
test.c:(.text+0x4cd): undefined reference to `png_init_io'
test.c:(.text+0x4e6): undefined reference to `png_set_longjmp_fn'
test.c:(.text+0x559): undefined reference to `png_set_IHDR'
test.c:(.text+0x572): undefined reference to `png_write_info'
test.c:(.text+0x58b): undefined reference to `png_set_longjmp_fn'
test.c:(.text+0x5bf): undefined reference to `png_write_image'
test.c:(.text+0x5d8): undefined reference to `png_set_longjmp_fn'
test.c:(.text+0x607): undefined reference to `png_write_end'
/tmp/ccWa9LDO.o: In function `process_file':
test.c:(.text+0x692): undefined reference to `png_get_color_type'
test.c:(.text+0x6be): undefined reference to `png_get_color_type'
test.c:(.text+0x6db): undefined reference to `png_get_color_type'
collect2: error: ld returned 1 exit status

Я не понимаю, потому что я ожидал бы, что если есть проблема с установкой, я получу ошибки только для включения png.h. Кто-нибудь знает?

2 ответов


Вы сказали в комментариях, что вы используете gcc my_code.c попробуй

gcc my_code.c -lpng

на -l флаг связывает библиотеку, в этом случае libpng12-dev.

Linking означает, что ваш компилятор добавляет код из всех объектных файлов для создания одного исполняемого файла. Объектные файлы-это отдельные скомпилированные файлы исходного кода (.o файлы).


Я думаю, вы установили только библиотеку обработки PNG. Вам нужно будет установить файлы заголовков, которые могут ссылаться на установленную библиотеку. Поэтому установите пакет " dev " также, как это

 sudo apt-get install libpng12-dev